注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Simon

 
 
 

日志

 
 

Symbian 启动J2ME的应用程序  

2010-06-17 01:29:44|  分类: Symbian C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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上测试通过
  评论这张
 
阅读(329)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018