主要有两个步骤: 1,使用Startup List Management API实现开机自启动 2,重载AppUI中的ProcessCommandParametersL()函数确定是否关闭(自启动后关闭==不启动)
1.1 在data目录下创建一个boot resource file,名字为XXXX.rss, 其中XXXX为UID3。 #include <startupitem.rh> RESOURCE STARTUP_ITEM_INFO startexe { executable_name = \\sys\\bin\\programToStart.exe; //换成你程序名字 recovery = EStartupItemExPolicyNone; } 1.2更新你的MMP文件 SOURCEPATH ..\data START RESOURCE XXXX.rss END 1.3更新你的PKG文件,中括号不要丢了! “\epoc32\data\yyyy.rsc”- “c:\private\101f875a\import\[yyyy].rsc” 有以下几点限制:必须装在c盘,必须用开发者证书。
如果一切顺利,程序可以自己随着手机开机而自己启动了,但是如何让用户可以在程序中设置让程序不要随机启动呢? 2.1修改程序的注册文件YourAppName_reg.rss: #include <appinfo.rh> #include <uikon.rh> RESOURCE APP_REGISTRATION_INFO { //其他原有代码 opaque_data = r_startup_detect; } RESOURCE NUMBER_INT8 r_startup_detect {value = 1;} 2.2 重载AppUI中的ProcessCommandParametersL()函数 Bool CMyAppUi::ProcessCommandParametersL( CApaCommandLine &aCommandLine ) { if(aCommandLine.OpaqueData().Length() > 0) { // 用户手动启动,存在OpaqueData } else { // 程序自动启动,存在OpaqueData。 // 可以在这里判断是否设置为不自动启动, 调用Exit()函数退出 } return CEikAppUi::ProcessCommandParametersL( aCommandLine ); } |