zoukankan      html  css  js  c++  java
  • Android开发 开机自启动功能实现

    前言

      此篇博客简单记录关于app自启动Activity与自启动Service的功能,这里的自启动是指设备开机后的自启动。并不是自启动保活。

    实现开机自启动需要的条件

    需要AndroidManifest.xml添加权限,但是添加了不等于解决问题。自启动权限无法通过,动态或者静态权限授权实际获得。还必需要自行引导用户在设置>应用管理>选择指定应用>开启自启动权限。

        <!-- 接收开机广播的权限,开机是很危险的行为,所以需要此权限 -->
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    具体实现

    注册广播

      此广播必需静态注册

    在AndroidManifest.xml 注册广播

            <receiver android:name=".SelfStartingReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" /> <!-- 开机广播 -->
                </intent-filter>
            </receiver>

    自启动Activity

    public class SelfStartingReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            Intent bootIntent = new Intent(context, LogoActivity.class);
            // 这里必须为FLAG_ACTIVITY_NEW_TASK
            bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(bootIntent);
        }
    }

    自启动Service

    public class SelfStartingReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            Intent bootIntent = new Intent(context, PermanentService.class);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                context.startForegroundService(bootIntent);
            }else {
                context.startService(bootIntent);
            }
        }
    }

    End

  • 相关阅读:
    【转】Struts2 和 Spring MVC对比
    【转】JVM介绍
    linux内核阻塞IO
    linux并发concurrency控制
    内核延时
    linux中断编程
    (转)关于java.lang.UnsupportedClassVersionError解决方法总结
    (转) 使用jdk的xjc命令由schema文件生成相应的实体类
    TWS日志查看
    (转)IBM MQ 创建以及常见问题集锦
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/13501798.html
Copyright © 2011-2022 走看看