代码如下,这里用kotlin做演示
AndroidManifest.xml添加
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".BootReceiver"
android:enabled="true"
android:exported="false">
<intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter></receiver>
<service android:name=".BootService"
android:exported="false"/>
新建BootReceiver.kt (这里我用的kotlin所以是kt哈, java就java)
package com.wjwcj.kk //这里写你自己的包名
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
class BootReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == Intent.ACTION_BOOT_COMPLETED) {
val launchIntent = Intent(context, MainActivity::class.java)
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) // 需要添加这个标志,否则无法启动 Activity context?.startActivity(launchIntent)
}
}
}
新建BootService.kt内容如下
package com.wjwcj.kk //还是写你自己的包名
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
class BootReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == Intent.ACTION_BOOT_COMPLETED) {
val launchIntent = Intent(context, MainActivity::class.java)
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) // 需要添加这个标志,否则无法启动 Activity context?.startActivity(launchIntent)
}
}
}
重要:在手机设置里面手动允许"自启动"
这个在安卓5.0实测有效
应用场景:
一些安卓系统的自动贩卖机可以这样搞,虽然我不知道厂家的技术人员是如何做的但是这样似乎可行,我是准备拿一个几十块钱的红米手机来做桌面小屏幕。连到电脑上就可以和电脑同时启动,放到主机机箱里就更好看啦(侧面玻璃的机箱)
运行时有问题问问chatgpt
或者联系邮箱wcj985@foxmail.com协助