(转)Symbian启动J2ME程序

转自Mark哥:http://blog.sina.com.cn/s/blog_5ccfd2d50100h68m.html

 

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 )
      {
         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;
                    
         }
      }
      
      TThreadId threadId;
      //用UID启动应用程序
      TInt err = apaSession.StartDocument(_L(""), iMIDlet,threadId);
      CleanupStack::PopAndDestroy(); // close apaSession
    }

以上代码在N95,6120,5320上测试通过

posted @ 2010-05-03 00:40  秋天的风  阅读(195)  评论(0编辑  收藏  举报