2nd下J2ME安装研究和启动方法
来源:互联网 发布:练习打字软件下载 编辑:程序博客网 时间:2024/06/02 05:23
(以下方法我在6680和n70上通过测试)
2nd下
每个J2ME程序安装后都会将安装文件放到C:/system/midlets/下,如TellSymbianILoveU.jar的安装会生成如下文件
C:/system/midlets/[10131ab7]/dump
C:/system/midlets/[10131ab7]/TellSymbianILoveU.jad
C:/system/midlets/[10131ab7]/TellSymbianILoveU.jar
C:/system/midlets/[10131ab7]/uids
其中10131ab7是uid,是symbian系统随机生成的.
该文件夹下的uids文件内容如下
B71A1310977D1910
其中前8个两两倒叙就是这里的[10131ab7],而后8个就是在C:/system/apps/下的UID: 10197d97
在C:/system/apps/下可以找到如下文件夹
C:/system/apps/[10197d97]/[10197d97].aif
C:/system/apps/[10197d97]/[10197d97].app
C:/system/apps/[10197d97]/[10197d97].bin
C:/system/apps/[10197d97]/[10197d97].txt
这里的[10197d97]就是之前的uids文件的后8位
所以可以猜测uids是一个uid映象文件,它将C:/system/midlets/下的jar文件和C:/system/apps/下的app文件一一对应
这样我们要在2nd下启动已安装的J2ME程序就可以这样得到文件路径了
先扫描C:/system/midlets/,找到和我们的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);
return;
}
CDir* c = NULL;
TFileName fullname;
TBuf<100> jarPath;
while(1)
{
ds->NextL(c);
if (!c)
break;
for (TInt i=0; i<c->Count(); i++)
{
const TEntry e= (*c)[i];
fullname.Copy(ds->FullPath());
fullname.Append(e.iName);
TParsePtrC p(fullname);
if(!p.NameAndExt().Compare(KJarFile))
{
RLog::Log(fullname);
RLog::Log(p.NameAndExt());
jarPath.Copy(p.Path());
}
}
delete c;
c=NULL;
}
CleanupStack::PopAndDestroy(ds);
//读uids
RLog::Log(_L("jarPath"));
RLog::Log(jarPath); //这里得到的值为 "/system/midlets/[10131ab7]/"
TBuf<100> uidsPath;
uidsPath.Append(_L("C:"));
uidsPath.Append(jarPath);
uidsPath.Append(_L("uids"));
RLog::Log(uidsPath); //到这里能正确得到C:/system/midlets/[10131ab7]/uids
TInt fileLength;
RFs fs;
RFile file;
fs.Connect();
file.Open(fs,uidsPath,EFileRead);
file.Size(fileLength);
RLog::Log(_L("fileLength"),fileLength);
HBufC8* heapBuf = HBufC8::NewLC(fileLength);
TPtr8 uids = heapBuf->Des();
file.Read(uids,fileLength);
RLog::Log(uids);
file.Close();
fs.Close();
//获取UID值
TBuf<8> uidBuf;
TInt i=0;
for (i=7;i>3;i--)
{
TInt aInt=0;
aInt=(TInt)uids[i];
RLog::Log(_L("aInt"),aInt);
TInt value=aInt/16;
uidBuf.Append(itoa(value));
value=aInt%16;
uidBuf.Append(itoa(value));
}
CleanupStack::PopAndDestroy();//heapBuf
RLog::Log(uidBuf); //得到10197d97
TBuf<100> appPath;
appPath.Append(KAppPath);
appPath.Append(uidBuf);
appPath.Append(_L("]//["));
appPath.Append(uidBuf);
appPath.Append(_L("].app"));
aPath.Copy(appPath);
RLog::Log(aPath); //得到C:/system/apps/[10197d97]/[10197d97].app
return;
}
TChar itoa(TInt aInt)
{
if(aInt<0||aInt>15)
{
RLog::Log(_L("EEROR in itoa"),aInt);
return aInt;
}
switch(aInt)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
return aInt + 48;
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
return aInt + 87;
}
}
void DoLaunchL() //
{
RLog::Log(_L(" IN DoLaunchL()"));
TBuf<100> path;
path.Copy(_L8("err"));
GetAppFilePath(path);
//启动
CApaCommandLine* cmdLine=CApaCommandLine::NewLC();
cmdLine->SetLibraryNameL( path );
cmdLine->SetCommandL( EApaCommandRun );
RApaLsSession ls;
User::LeaveIfError( ls.Connect() );
CleanupClosePushL(ls);
User::LeaveIfError( ls.StartApp(*cmdLine) );
CleanupStack::PopAndDestroy( 2 ); // ls ,cmdLine
RLog::Log(_L("END DoLaunchL()"));
}
- 2nd下J2ME安装研究和启动方法
- 2nd下J2ME安装研究和启动方法
- 2nd下J2ME安装研究和启动方法
- Linux下memcached安装和启动方法
- Linux下memcached安装和启动方法
- Linux下memcached安装和启动方法
- Symbian 2nd 开机启动
- 2 windows 下 es 和插件 安装 启动
- Linux安装包格式和安装方法研究
- 学习.NET (2) 语言和国家地区 下 Language and Region (2nd Half)
- j2me 打包和安装问题?????
- FFMPEG研究: ubuntu平台下ffmpeg的编译安装方法
- symbian 中自动寻找cmwap连接点,通杀uiq 2nd 3nd和s60 2nd 3nd 5nd
- linux下网路启动服务器安装和配置方法(pxe+tftp+dhcpd)
- linux下网路启动服务器安装和配置方法(pxe+tftp+dhcpd)
- Windows7下mysql安装后服务无法启动和启动后无法登录的问题解决的方法
- MongoDB Linux下的安装和启动
- MongoDB Linux下的安装和启动
- IT创业见闻05-“看菜下饭”再论老板的资源观
- 牢骚
- 创建一个窗口 -- From GameTutorials, LLC
- Hibernate配置过程可能发生的问题及解决方法
- SQL Server 2008新特性——FILESTREAM
- 2nd下J2ME安装研究和启动方法
- GOF设计模式---23种
- mysql的用户与权限
- Logical block addressing
- 揭开华胜天成2009年“软”实力罗盘布局
- 教你多种方法使你的XP启动更快~
- JSTL标签和Struts标签的对应参照
- 重用自己创建的窗体
- 学车记 - 报名