Symbian 启动J2ME的应用程序
2010-04-11 22:03:00 来源:WEB开发网在Symbian下启动J2ME的应用程序一直是大家热烈讨论的问题.
因为J2ME在S60上变态的安装过程.以及J2ME莫名其妙的标识全球唯一的特性.
使本应该简单的问题变态了.
在S60上应用程序是通过UID来作为全球唯一标识的.
这样带来的好处是什么呢.我们可以通个UID很快定位到我们需要的程序.
并且在安装的过程中,安装程序也原样使用了UID.
但是在安装J2ME的时候.安装程序会给J2ME随机分配一个UID.
老天保佑的事.这个UID在本机上是唯一的.
即然这个UID是唯一那我们能不能通过这个UID去启动程序呢.
这么美好的想法我们试试吧.
#include
void CLaunchJ2METestAppUi::GetAllApp()
{
TApaAppInfo appInfo;
RApaLsSession apaSession;
User::LeaveIfError( apaSession.Connect() );
CleanupClosePushL( apaSession );
User::LeaveIfError( apaSession.GetAllApps() );
//枚举所有的应用程序
while ( apaSession.GetNextApp( appInfo ) == KErrNone )
{
if(appInfo.iFullName.Right(8).CompareF(_L(".fakeapp")) == 0)
{
//查找所有的JAR的应用程序.
//JAR的应用都是以.fakeapp后缀结尾
if(appInfo.iCaption.FindF(_L("x8D2Ax98DFx86C7")) != -1)
{
//查找需要启动的应用程序的名字,取得对应的ID
iMIDlet = appInfo.iUid;
break;
}
}
}
TThreadId threadId;
//用UID启动应用程序
TInt err = apaSession.StartDocument(_L(""), iMIDlet, threadId);
CleanupStack::PopAndDestroy(); // close apaSession
}
以上代码在N95,6120,5320上测试通过
更多精彩
赞助商链接