symbian 2nd 下 J2ME 安装研究和启动方法
2010-03-11 16:12:00 来源:WEB开发网(以下方法我在6680和n70上通过测试)
2nd下
每个J2ME程序安装后都会将安装文件放到C:systemmidlets下,如TellSymbianILoveU.jar的安装会生成如下文件
C:systemmidlets[10131ab7]dump
C:systemmidlets[10131ab7]TellSymbianILoveU.jad
C:systemmidlets[10131ab7]TellSymbianILoveU.jar
C:systemmidlets[10131ab7]uids
其中10131ab7是uid,是symbian系统随机生成的.
该文件夹下的uids文件内容如下
B71A1310977D1910
其中前8个两两倒叙就是这里的[10131ab7],而后8个就是在C:systemapps下的UID: 10197d97
在C:systemapps下可以找到如下文件夹
C:systemapps[10197d97][10197d97].aif
C:systemapps[10197d97][10197d97].app
C:systemapps[10197d97][10197d97].bin
C:systemapps[10197d97][10197d97].txt
这里的[10197d97]就是之前的uids文件的后8位
所以可以猜测uids是一个uid映象文件,它将C:systemmidlets下的jar文件和C:systemapps下的app文件一一对应
这样我们要在2nd下启动已安装的J2ME程序就可以这样得到文件路径了
先扫描C:systemmidlets,找到和我们的J2ME程序在同一目录下的uids文件,读取该文件的后8位的UID,然后将该UID组合成app文件的路径
(这里我以我的J2ME程序名为TellSymbianILoveU.jar为例)
这个过程挺麻烦的
void GetAppFilePath(TDes& aPath)
{
RLog::Log(_L("In GetAppFilePath()"));
_LIT(KJarFile,"TellSymbianILoveU.jar");
_LIT(KAppPath,"C:\system\apps\[");
#ifndef __WINS__
_LIT(KMidlPath,"C:\system\midlets\"); //for real device
#else
_LIT(KMidlPath,"C:\logs\"); //for win
#endif
//获取uids文件的路径
CDirScan* ds = CDirScan::NewLC(iCoeEnv->FsSession());
TRAPD(err,ds->SetScanDataL(KMidlPath,KEntryAttNormal,ESortByName|EAscending,CDirScan::EScanDownTree));
if (err!=KErrNone)
{
CleanupStack::PopAndDestroy(ds);
更多精彩
赞助商链接