Symbian 根据配置开机自启动

2024-03-30 19:18

本文主要是介绍Symbian 根据配置开机自启动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开机自启动:

例子:
本程序的UID3是:0xEDF87410

1.在data刚创建EDF87410.rss
的RSS文件中添加以下内容:

#include <startupitem.rh>  

RESOURCE STARTUP_ITEM_INFO startexe
{
    executable_name = "!://sys//bin//LDA20_05_0xEDF87410.exe";
    recovery = EStartupItemExPolicyNone;
}

//!:代表安装到任何目录下面。
//LDA20_05_0xEDF87410.exe是要启动的程序,和mmp文件中的TARGET字段的内容相同。


2.打开工程的.MMP 文件,添加以下代码。
START RESOURCE ../DATA/EDF87410.rss
END
//EDF87410.rss是data文件夹下的文件。


3.在你的.PKG 文件中添加下面这行:
"C:/Symbian/9.1/S60_3rd_MR/Epoc32/data/EDF87410.rsc"-"c:/private/101f875a/import/[EDF87410].rsc"

//程序可以安装在任何路径,但[uid3].rsc 必须安装在c:/private /101f875a/import/。 不可以将c:改成!:
//该rsc文件被安装到手机上里,必须以[UID3].rsc这样的形式存在,即中括号[]是必须的,UID3中不能包含0x。


4. 重新Build工程,看看你的程序能不能开机自启动了…


//---------------------------------------------------根据配置实现开机自启动---------------------------------------------

5.修改程序的注册资源文件data/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;}

6.重载AppUi中的ProcessCommandParametersL()函数
TBool CLDA20_05AppUi::ProcessCommandParametersL(CApaCommandLine &aCommandLine)
    {
    if (aCommandLine.OpaqueData().Length() > 0)
        {
        // 此处为用户手动启动

        }
    else
        {
        // 此处为程序开机后自动启动,如果设置为开机不自动启动, 在此处调用Exit()函数退出。
        if (!ReadFile())
            {
            Exit();
            }

        }
    return CEikAppUi::ProcessCommandParametersL(aCommandLine);

    }

7.自己写的附带的两个函数。功能是把开机配置信息写到文件中,读取开机配置文件。
#include <aknutils.h>
#include <f32file.h>
#include <utf.h>
//charconv.lib
void CLDA20_05AppUi::WriteFile(TBool aState)
    {
#ifdef __WINS__
    //Run in emulator
    _LIT(KFileName,"C://LDA20_05_star.txt");
    TFileName Path(KFileName);
#else
    //Run in phone,note that this path should be as the same as defined in pkg file
    _LIT(KFileName,"//LDA20_05//LDA20_05_star.txt");
    TFileName Path(KFileName);
    User::LeaveIfError(CompleteWithAppPath(Path));
#endif

    //得到文件会话
    RFs& fs = CEikonEnv::Static()->FsSession();

    //文件指针
    RFile file;

    //删除原有文件
    fs.Delete(Path);

    //打开文件,如文件未找到,则创建文件
    TInt err;
    err = file.Open(fs, Path, EFileWrite);

    //如果文件没有找到,就创建文件
    if (err == KErrNotFound)
        User::LeaveIfError(file.Create(fs, Path, EFileWrite));
    else
        User::LeaveIfError(err);

    TBuf<32> bufValue(KNullDesC);
    if (aState)
        bufValue.Append(_L("1"));
    else
        bufValue.Append(_L("0"));

    //用于接收转换过编码的内容
    HBufC8*pBuf8 = HBufC8::NewL(bufValue.Length());
    TPtr8 ptr8(pBuf8->Des());
    CnvUtfConverter::ConvertFromUnicodeToUtf8(ptr8, bufValue);

    //Write和Read函数只能使用8位的数据
    file.Write(*pBuf8);

    //删除存放内容指针
    delete pBuf8;
    pBuf8 = NULL;

    //关闭RFile,释放资源
    file.Close();
    }

TBool CLDA20_05AppUi::ReadFile()
    {
#ifdef __WINS__
    //Run in emulator
    _LIT(KFileName,"C://LDA20_05_star.txt");
    TFileName Path(KFileName);
#else
    //Run in phone,note that this path should be as the same as defined in pkg file
    _LIT(KFileName,"//LDA20_05//LDA20_05_star.txt");
    TFileName Path(KFileName);
    User::LeaveIfError(CompleteWithAppPath(Path));
#endif
    //打开会话
    RFs& fs = CEikonEnv::Static()->FsSession();

    //加载文件
    RFile file;

    User::LeaveIfError(file.Open(fs, Path, EFileRead));

    //获取文件长度
    TInt length = 0;
    file.Size(length);

    //文件为空返回ETrue
    if (0 == length)
        {
        file.Close();
        return ETrue;
        }

    //接受文件内容指针
    HBufC8* pBuf8 = HBufC8::NewL(length);
    TPtr8 ptr8(pBuf8->Des());

    //读取文件
    file.Read(ptr8);

    //用于接收转换后的内容
    HBufC* pBuf = HBufC::NewL(length);
    TPtr ptr(pBuf->Des());
    ptr.Zero();

    //转换文件编码
    CnvUtfConverter::ConvertToUnicodeFromUtf8(ptr, ptr8);

    //文件关闭
    file.Close();

    //删除指针
    delete pBuf8;
    pBuf8 = NULL;

    TInt num = pBuf->Des().Compare(_L("1"));
    if (num == 0)
        return ETrue;
    else
        return EFalse;

    }


8.在sis文件夹下添加LDA20_05_star.txt文件。在pkg文件中加入打包语句。

"../sis/LDA20_05_star.txt"                             -"!:/LDA20_05/LDA20_05_star.txt"

这篇关于Symbian 根据配置开机自启动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862348

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

Kibana的安装和配置全过程

《Kibana的安装和配置全过程》Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们... 目录Kibana的安装和配置1.安装Java运行环境2.下载Kibana3.解压缩Kibana4.配

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam