关于qt写的程序,在win和linux平台的自启动网上资料很全,但android没有。
google了一下,qtproject的论坛里有人问这个问题,仅有的一个回复指向一个链接(引用1),我发现这篇文章就是烂大街的讨论android程序自启动,看来仅靠qt自己是无法解决了,还是需要android sdk。
既然这样,就按照人家说的做吧,首先要添加AndroidManifest.xml文件,项目-》运行-》deploy configuration-》详情-》creat在AndroidManifest.xml。
在AndroidManifest.xml里添加
<receiver android:enabled="true" android:name=".BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
这个要添加到application标签内,然后添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>保存AndroidManifest.xml。
接下来就是重点了,AndroidManifest.xml文件开头,标签manifest之后的第一个属性,不出意外应该都是package="org.qtproject.example",注意双引号里面org,qtproject,example三个部分,
然后在源码目录下,应该有一个android目录,按照引用文档2的办法,在android目录下先建立一个src目录,在src目录下依次建立子目录org,qtproject和example,然后在example下再建立个子目录,名字是工程名字xxx,如果在xxx.pro里指定过TARGET属性TARGET=yyy,那么这个目录就叫yyy,
在这个目录下,添加BootUpReceiver.java文件,BootUpReceiver类按照引用文档1来写,在文件最上面添加package org.qtproject.example.xxx或org.qtproject.example.yyy,然后在类中找到
Intent i = new Intent(context, MyActivity.class);
将这里的MyActivity替换成org.qtproject.qt5.android.bindings.QtActivity。
保存,构建,运行,实现开机自启动。
引用文档: