zoukankan      html  css  js  c++  java
  • Android 开机自启动

    首先实现开机自启动:

    第一步创建一个广播接收者,如MyBootBroadcastReceiver.java

    View Code

    第二步给receiver配置对应intent-filter

    View Code

    第三步添加权限,缺少这步则无法在Android 3.0及其之前版本上自启动

    View Code

    上面的实现有以下【限制】:

    1.由于Android系统在外置SD卡加载前广播ACTION_BOOT_COMPLETED,于是如果应用安装在外置SD卡上,它无法接收到此广播,原文见Broadcast Receivers listening for "boot completed"

    2.从Android 3.1(API level对应NDK版本)开始,系统的包管理器保持跟踪处于停止状态(stopped state)的应用程序,提供了一种控制其从后台进程和其它应用程序启动的方式。这种停止状态的应用程序指那些安装了但从未启动过的apk,或被用户在程序管理中force stop的apk。Android系统为防止广播无意或不必要开启停止状态的组件,它给所有广播intent添加了FL​​AG_EXCLUDE_STOPPED_PACKAGES标志(不设置和同FLAG_INCLUDE_STOPPED_PACKAGES一起设置结果都是此标志),

    Intent.java

    View Code

    IntentResolver.java

    View Code

    此标志指广播intent排除停止状态的应用,原文见Launch controls on stopped applications。用户可以给自己的应用或者后台服务添加FLAG_INCLUDE_STOPPED_PACKAGES标志以唤醒停止状态的应用,但系统自带的广播intent,用户无法修改,只能接受;注意系统级应用都不是停止状态

    PackageManagerService.java中重写IntentResolver

    View Code


    最后禁止开机自启动,参考文章android手机root后的安全问题 (四)

  • 相关阅读:
    MySQL分库分表环境下全局ID生成方案
    机器码和字节码
    Java程序编译和运行的过程
    hive大数据倾斜总结
    图解MapReduceMapReduce整体流程图
    Java中的5种同步辅助类
    Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
    RocketMQ与Kafka对比(18项差异)评价版
    ENode 2.0
    SecureCrt的操持连接办法
  • 原文地址:https://www.cnblogs.com/fanfeng/p/3236178.html
Copyright © 2011-2022 走看看