检测应用程序路径

TSS001072

设备, 软件 版本: S60 2nd Edition
S60 3rd Edition
S60 3rd Edition, FP1
S60 3rd Edition, FP2

详细描述
终端用户将会选择将程序安装到C盘(手机存储)或E盘(存储卡或内置硬盘)中。程序有时需要知道自己的安装位置,对程序安装位置的判断取决于S60平台的版本。

解决方案
S60第二版
在S60第二版中,使用aknutils.h中的CompleteWithAppPath(TDes& aFileName)方法。这个方法将返回给定一个描述符,内有所有需要的组成部分(盘符,路径,包括后缀的文件名)。任何缺少的部分(路径和盘符)将从应用程序路径
(<drive>:/system/apps/<application_name> )中获取
#include <aknutils.h>
 
   // Insert the full application path into the file name (fileName)
   TFileName fullPath(fileName);
   CompleteWithAppPath(fullPath);    // from aknutils.h

S60第三版
从S60第三版向后,所有二进制程序(Exe和Dll文件)都存储在/Sys/bin中。要访问这个目录,程序需要AllFiles能力。资源和数据是无法存入这个目录的。程序有自己的目录/private/<SID>/各自安放,这里SID是一个安全标识,每个程序都是独一无二的。程序通过这个私有目录存放.ini,.mbm,.rsc和数据文件。其他没有AllFiles能力的程序将无法访问它们。

在S60第三版上CompleteWithAppPath()方法将总是返回/sys/bin作为程序安装目录。如果要访问程序的私有目录中的数据,将要用另一个方法来获得路径:
TFileName appPath;
  TBuf<2> appDrive;
  // Returns private path of this application
  // in following format: /Private/<SID of the application>/
  // (does not contain drive specification).
  iEikonEnv->FsSession().PrivatePath( appPath );
  // Extract drive letter into appDrive
  appDrive.Copy(iEikonEnv->EikAppUi()->Application()->AppFullName().Left(2));
  // Insert drive letter into path
  appPath.Insert(0, appDrive);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值