Symbian 启动J2ME的应用程序
在Symbian下启动J2ME的应用程序一直是大家热烈讨论的问题.
因为J2ME在S60上变态的安装过程.以及J2ME莫名其妙的标识全球唯一的特性.
使本应该简单的问题变态了.
在S60上应用程序是通过UID来作为全球唯一标识的.
这样带来的好处是什么呢.我们可以通个UID很快定位到我们需要的程序.
并且在安装的过程中,安装程序也原样使用了UID.
但是在安装J2ME的时候.安装程序会给J2ME随机分配一个UID.
老天保佑的事.这个UID在本机上是唯一的.
即然这个UID是唯一那我们能不能通过这个UID去启动程序呢.
这么美好的想法我们试试吧.
#include <APGCLI.H>
void CLaunchJ2METestAppUi::GetAllApp()
{
TApaAppInfo appInfo;
RApaLsSession apaSession;
User::LeaveIfError( apaSession.Connect() );
CleanupClosePushL( apaSession );
User::LeaveIfError( apaSession.GetAllApps() );
//枚举所有的应用程序
while ( apaSession.GetNextApp( appInfo ) == KErrNone )
{
#ifdef __SERIES60_30__
//第三版上判断JAVA应用程序的办法
if(appInfo.iFullName.Right(8).CompareF(_L(".fakeapp")) == 0)
{
//查找所有的JAR的应用程序.
//JAR的应用都是以.fakeapp后缀结尾
if(appInfo.iCaption.FindF(_L("/x8D2A/x98DF/x86C7")) != -1)
{
//查找需要启动的应用程序的名字,取得对应的ID
iMIDlet = appInfo.iUid;
break;
}
}
#else
//第二版上判断JAVA应用程序的办法
if(appInfo.iFullName.FindF(appInfo.iUid.Name()) != -1)
{
iMIDlet = appInfo.iUid;
break;
}
#endif
}
TThreadId threadId;
//用UID启动应用程序
TInt err = apaSession.StartDocument(_L(""), iMIDlet, threadId);
CleanupStack::PopAndDestroy(); // close apaSession
}
以上代码在N95,6120,5320,N70上测试通过
Symbian 启动J2ME的应用程序
最新推荐文章于 2025-08-08 22:01:10 发布