qt for android实现程序的开机自启动。

时间:2021-08-15 15:41:08

关于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。

保存,构建,运行,实现开机自启动。


引用文档:

How to launch Android app on boot

http://developer.appcelerator.com/question/129747/how-to-launch-android-app-on-boot

Qt on Android:使用JNI与第三方jar包

http://blog.csdn.net/foruok/article/details/39291273