您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

android关于开机启动

时间:02-07来源:作者:点击数:
  1. 声明权限
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    
  2. 声明接收者
     <receiver android:name=".BootCompletedReceiver"
         android:enabled="true"
         android:exported="true">
         <intent-filter>
             <action android:name="android.intent.action.BOOT_COMPLETED" />
         </intent-filter>
     </receiver>
    
  3. 接收者实现类
    class BootCompletedReceiver : BroadcastReceiver() {
    
        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
                startApp(context)
                Log.i("ABCD", "系统启动完成")
            }
        }
    
        /** 启动app */
        private fun startApp(context: Context) {
            val appContext = context.applicationContext
            val intent = Intent(appContext, MainActivity::class.java)
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            appContext.startActivity(intent)
        }
    
    }
    
    完整示例代码:https://gitee.com/daizhufei/receive-boot-complete.git,在公司的Android 7.1.1的手机试验,能成功监听到系统启动,并完成App的自动启动。需要注意的是,应用安装后,如果一次都没有启动过,关机重启后是监听不到系统启动事件的,必须手动启动过app之后,以后再启动系统时就可以监听到了。
  4. 不知道从哪个版本开始,虽然声明了监听开机启动的权限,但是安装后默认是没有此权限的,需要手动到设置中打开此权限,而且这个权限不在权限列表里面显示,单独放在一个地方进行开机启动的设置。如下(小米6 Android 9):
    在这里插入图片描述
    如上图红色框为开机启动开关,默认都是关的,需要手动打开才能监听到开机启动,在小米6 Android 9实验时,发现还要同时开启另一个权限“允许应用在后台弹出界面”,如下:
    在这里插入图片描述
    在小米11 pro Android 11中测试时,一样的设置,发现可以监听到系统启动,但是无法打开Activity。

在oppo A55 5G Android 11中,怎么设置都监听不到系统启动,实验时是使用目标版本为Android 11,不知道把目标版本设置低一些是否有影响。

  1. 如果是一个无启动Activity的应用,虽然也声明了相应的权限的接收者,但是无法接收到系统的启动。在公司Android 7.1.1的手机上试验的。即声明有Activity,但是没声明有启动类型的Activity就无法接收系统启动。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门