Symbian开机自启动

假设你的应用ID为:ef37946b
1) 在data下新建一个文件, [ef37946b].rss(注意加上[])
#include <startupitem.rh>
RESOURCE STARTUP_ITEM_INFO dispatcher
    {
    executable_name = "!://sys//bin//AutoStart.exe";
    recovery = EStartupItemExPolicyNone;
}
此处的AutoStart.exe是你的应用程序文件名。
注:笔者视图通过此处改为其他应用程序名启动,但是没有成功。
2) 在mmp文件中增加以下代码
START RESOURCE [ef37946b].rss
TARGETPATH                              /private/101f875a/import
HEADER                                  
END
确保:
LANG              SC
CAPABILITY         ReadUserData
注意“/private/101f875a/import”不能够变。
3) 在pkg文件中增加以下代码
"$(EPOCROOT)Epoc32/Data/z/private/101f875a/import[ef37946b].rSC" - "!:/private/101f875a/import/[ef37946a].rSC"
如果是采用carbidec++2.0编译,那么你可以使用上述代码
如果是使用makesis命令行打包或者使用.Net编译,那么你需要修改成绝对路径,路径名视你的安装目录而定。
例如:
"C:/Symbian/9.1/S60_3rd_MR/Epoc32/Data/z/private/101f875a/import[ef37946b].rSC"-"!:/private/101f875a/import/[ef37946a].rSC"

有时候是否自启动需要通过配置来由用户控制,做法如下:

第一步:
XXXX_reg.rss中:
APP_REGISTRATION_INFO增加opaque_data = r_startup_type; 并在该文件中定义
RESOURCE NUMBER_INT8 r_startup_type
{
value = 1;
}

这还需要包含<uikon.rh>

第二步:
AppUi中重写TBool ProcessCommandParametersL(CApaCommandLine &aCommandLine);

TBool CXXXXAppUi::ProcessCommandParametersL(CApaCommandLine &aCommandLine)
{
if (aCommandLine.OpaqueData().Length() > 0)
{
   // 手动启动
}
else
{
   // 自启动
  
   // TODO: 读取配置..
   if (自启动配置为关闭状态)
   {
    Exit();
   }
}

return CEikAppUi::ProcessCommandParametersL(aCommandLine);
}

碰到安装到Card Memory后无法自启动的情况,但安装到Phone Memory是可以的。原因可参照:http://www.forum.nokia.com/document/Cpp_Developers_Library/GUID-96C272CA-2BED-4352-AE7C-E692B193EC06/html/Startup_List_Management_API4.html#Startup_List_Management_API_17

须将[12345678].rsc和要自启动的exe和相关文件在PKG中硬编码安装到Phone Memory。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值