当前自启动

private final String[] mActions = new String[] {

Intent.ACTION_PACKAGE_CHANGED, Intent.ACTION_PACKAGE_ADDED, Intent.ACTION_PACKAGE_REMOVED, Intent.ACTION_PACKAGE_REPLACED, Intent.ACTION_BOOT_COMPLETED,

ConnectivityManager.CONNECTIVITY_ACTION, "android.intent.action.ANY_DATA_STATE", "android.intent.action.NEW_OUTGOING_CALL", "android.intent.action.PHONE_STATE", Intent.ACTION_USER_PRESENT,

"android.net.wifi.STATE_CHANGE", "android.net.wifi.WIFI_STATE_CHANGED", Intent.ACTION_TIME_CHANGED, BluetoothAdapter.ACTION_STATE_CHANGED, Intent.ACTION_POWER_CONNECTED,

Intent.ACTION_POWER_DISCONNECTED, "android.net.conn.CONNECTIVITY_CHANGE", Intent.ACTION_MEDIA_EJECT, Intent.ACTION_MEDIA_MOUNTED

};

实现机制PackageManager.setComponentEnableSetting

adb shell pm grant com.qihoo.sleep android.permission.CHANGE_COMPONENT_ENABLED_STATE

Operation not allowed: java.lang.SecurityException: Permission android.permission.CHANGE_COMPONENT_ENABLED_STATE is not a changeable permission type

Rom自身方案

HUAWEI(EMUI)

com.huawei.systemmanager

Screenshot_20180422-101517.png

自启主界面Activity可正常唤起

snp20180413100516673.png

Screenshot_20180422-102200.png

关联自启Activity(exported = false)无法直接唤起,只能引导用户从主界面进入

snp20180413100941338.png

snp20180413103645577.png

IMG_20180422_103942.png

SAMSUNG

锁屏后经常有这种log:

E/MARsPolicyManager: Package: com.baidu.yuedu hostingType: broadcast is Restricted by policy: autorunpolicy(4) caller is: ProcessRecord{726fc06 1267:system/1000}

E/MARsPolicyManager: Package: com.financial360.nicaifu hostingType: broadcast is Restricted by policy: autorunpolicy(4) caller is: ProcessRecord{726fc06 1267:system/1000}

锁屏后kb&禁止唤醒,并没有forcestop,除非设置白名单(即使在白名单中7天未使用也会禁止唤醒)。

UI不是通过Setting,而是自带的StartManager

Screenshot_20180404-104910.png

Screenshot_20180413-105231.png

snp20180404111331038.png

同样二级页不可直接唤起

$ adb shell am start -n com.samsung.android.sm/.ui.ram.RamActivity

Starting: Intent { cmp=com.samsung.android.sm/.ui.ram.RamActivity }

java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.samsung.android.sm/.ui.ram.RamActivity } from null (pid=22393, uid=2000) not exported from uid 1000

at android.os.Parcel.readException(Parcel.java:1620)

at android.os.Parcel.readException(Parcel.java:1573)

at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3170)

at com.android.commands.am.Am.runStart(Am.java:903)

at com.android.commands.am.Am.onRun(Am.java:362)

at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)

at com.android.commands.am.Am.main(Am.java:103)

at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)

at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:257)

MIUI

Screenshot_2018-04-14-11-03-36-753_com.miui.securitycenter.png

不允许自启动:

broadcast唤醒失败

W/BroadcastQueueInjector: Unable to launch app com.qihoo.cleandroid_cn/10285 for broadcast Intent { act=com.qihoo360.mobilesafe.opti.schedule.ACTION_INIT_SCHEDULE flg=0x30 pkg=com.qihoo.cleandroid_cn }: process is not permitted to auto start

service唤醒失败

W/WakePathChecker: MIUILOG-WAKEPATH: call was rejected by wakepath. userId= 0 caller= com.example.myapplication2 callee= com.qihoo.cleandroid_cn classname=com.qihoo360.mobilesafe.opti.service.ExportedService action=com.qihoo.cleandroid_cn.QihooAlliance wakeType=8

允许自启动:

broadcast唤醒成功

D/WtComponentManager: start the package is com.qihoo.cleandroid_cn the call is com.example.myapplication2 startType is 4

D/BroadcastLimitPolicy: [ALLOW] [broadcast] callerPackage com.example.myapplication2 start process with Intent { act=com.qihoo360.mobilesafe.opti.schedule.ACTION_INIT_SCHEDULE flg=0x30 pkg=com.qihoo.cleandroid_cn } componentName com.qihoo.cleandroid_cn/com.qihoo360.mobilesafe.opti.schedule.ScheduleInitReceiver [reason:3]

service唤醒失败

D/WtComponentManager: start the package is com.qihoo.cleandroid_cn the call is com.example.myapplication2 startType is 2

D/LimitPushControlPolicy: check if com.qihoo.cleandroid_cn:resident is a push

D/LimitPushControlPolicy: com.qihoo.cleandroid_cn:resident is not a push

W/ActivityManager: Background start not allowed: service Intent { act=com.qihoo.cleandroid_cn.QihooAlliance pkg=com.qihoo.cleandroid_cn } to com.qihoo.cleandroid_cn/com.qihoo360.mobilesafe.opti.service.ExportedService from pid=21944 uid=10120 pkg=com.example.myapplication2

小米安全中心:com.miui.securitycenter

自启动管理页面可直接唤起

snp20180404112854997.png

VIVO(Funtouch OS):

3423de73.jpg

com.vivo.permissionmanager/.activity.BgStartUpManagerActivity

自启动页面无法唤起

$ adb shell am start -n com.vivo.permissionmanager/.activity.BgStartUpManagerActivity

Starting: Intent { cmp=com.vivo.permissionmanager/.activity.BgStartUpManagerActivity }

java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.vivo.permissionmanager/.activity.BgStartUpManagerActivity } from null (pid=28141, uid=2000) not exported from uid 1000

at android.os.Parcel.readException(Parcel.java:1684)

at android.os.Parcel.readException(Parcel.java:1637)

at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3228)

at com.android.commands.am.Am.runStart(Am.java:643)

at com.android.commands.am.Am.onRun(Am.java:394)

at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)

at com.android.commands.am.Am.main(Am.java:124)

at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)

at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)

service无法唤醒stopped包(无论是否允许自启动)

W/ActivityManager: mCallerApp.pid =5980,mCallerApp.uid=10237

W/ActivityManager: mCallingPidFilter=5980,mCallingUidFilter=10237

W/ActivityManager: ==/==>: com.qihoo.sleep/10235 for service callerPackage com.qihoo.waker Intent { act=com.example.myapplication.wake pkg=com.qihoo.sleep }: XXXX

broadcast允许自启动正常唤醒,否则无法唤醒。并无ActivityManager log输出

W/BroadcastQueue: ==/==> com.qihoo.sleep/10235 for broadcast Intent { act=com.example.myapplication.wake flg=0x30 }: XXXX

关联自启页面Activity

3423de73 (1).jpg

image.png

adb shell am start -n com.vivo.appfilter/.activity.StartupManagerActivityRom30

OPPO(ColorOS)

com.coloros.safecenter

a60cdc36.jpg

a60cdc36 (1).jpg

snp20180413112233100.png

$ adb shell am start -n com.coloros.safecenter/.startupapp.AssociateStartActivity

Starting: Intent { cmp=com.coloros.safecenter/.startupapp.AssociateStartActivity }

java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.coloros.safecenter/.startupapp.AssociateStartActivity } from null (pid=10855, uid=2000) requires oppo.permission.OPPO_COMPONENT_SAFE

at android.os.Parcel.readException(Parcel.java:1694)

at android.os.Parcel.readException(Parcel.java:1647)

at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3232)

at com.android.commands.am.Am.runStart(Am.java:635)

at com.android.commands.am.Am.onRun(Am.java:388)

at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)

at com.android.commands.am.Am.main(Am.java:121)

at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)

at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:364)

adb shell cmd package list permissions -f > ./1.txt

permission:oppo.permission.OPPO_COMPONENT_SAFE

package:oppo

label:null

description:null

protectionLevel:signature|privileged

但是可以唤起他们的上一级Activity

a60cdc36 (2).jpg

snp20180413171535133.png

android 7.0 关联启动,自启动关联启动相关推荐

  1. Android 4.0 ICS SystemUI浅析——SystemUI启动流程

    阅读Android 4.0源码也有一段时间了,这次是针对SystemUI的一个学习过程.本文只是对SystemUI分析的一个开始--启动流程的分析,网上有很多关于2.3的SystemUI的分析,可4. ...

  2. android 获取快捷开关_干货水帖:Android 6.0 如何从快速开关面板启动微信扫一扫?...

    自从 iOS 开放了 Widget 接口之后,很多「勇士」就探索 Widget 的各种可能性.比如前段时间很火的 Steve,让你不开锁屏就能玩到 Chrome 中内置的恐龙跳小游戏. iOS 的 W ...

  3. Android 9.0 在init.rc中启动一个服务

    现在有一个blink .bin文件,需要拷贝到/system/bin/目录下面去,然后再init.rc文件中启动该服务 一.init.rc文件中启动服务 1.在init.rc文件中启动服务 代码路径: ...

  4. Android 10.0 framework根据允许app启动白名单限制其他app启动

    目录 1.概述 2.framework根据白名单启动app的相关核心代码 3.framework根据白名单启动app的相关核心代码

  5. android 8.0以后(sdk26)启动前台服务的问题探究

    https://blog.csdn.net/sinat_20059415/article/details/80584487 转载于:https://www.cnblogs.com/antble/p/1 ...

  6. 前台如何正确接收流信息_如何绕过 Android 8.0 startService 限制?

    ❝ 应用在后台运行时,会消耗一部分有限的设备资源,例如 RAM.这可能会影响用户体验,如果用户正在使用占用大量资源的应用(例如玩游戏或观看视频),影响会尤为明显.为了提升用户体验,Android 8. ...

  7. android微信电话锁屏,解决 Android 7.0 系统中,微信无法在锁屏画面显示

    文章版块:HTC One A9 在 Android 7.0 系统中htc手机微信怎么截屏htc手机微信怎么截屏,会出现微信无法在锁屏画面显示的状况.建议您进行下面修改就可以解决: 进入"HT ...

  8. Android 4.0 ICS SystemUI浅析——StatusBar加载流程分析

    前面两篇文章< Android 4.0 ICS SystemUI浅析--SystemUI启动流程>.< Android 4.0 ICS SystemUI浅析--StatusBar结构 ...

  9. Android 4.0 ICS SystemUI浅析——StatusBar结构分析

    在上一篇文章<Android 4.0 ICS SystemUI浅析--SystemUI启动流程>中以及提到了SystemUI的组成,本文主要分析其中的StatusBar结构. 1.布局概览 ...

最新文章

  1. Java过滤器与SpringMVC拦截器之间的关系与区别
  2. 第二篇:salt-api使用填坑指南
  3. fftw_plan_dft_2d异常 使用技巧
  4. Java_StringBuffer类
  5. android 访问sqlite,android中访问已有的sqlite数据库
  6. android中的shape资源,Android Drawable资源讲解之shape篇
  7. ninjala还是显示服务器维护,Ninjala更新2.0版本 调整了武器平衡以及BUG修复
  8. 【数据结构笔记21】图的遍历,DFS与BFS,连通图
  9. 学习《让UpdatePanel支持文件上传》系列文章的相关链接
  10. 信息技术c语言试题,全国信息技术水平考试C语言考试试卷.doc
  11. 【小程序合集】来一组适合你的表情包-表情包大全
  12. Excel下的数据挖掘:学生成绩统计分析实战之总体分析
  13. 0x80070057复制从服务器复制文件,解决win10更改用户文件夹提示0x80070057的方法
  14. 学计算机系的考公好考吗,最适合考公务员的十大专业,学个好专业,考公很容易!...
  15. TensorFlow从1到2(十一)变分自动编码器和图片自动生成
  16. 用户注册及APP使用隐私协议
  17. 怎样成为“吃鸡”沙漠霸主?掌握资源点是关键
  18. 实验二 贪吃蛇的游戏开发
  19. Web服务器python编程
  20. 基于STM32的电机--直流有刷电机H桥驱动的不同模式分析

热门文章

  1. qt dependant doesn not exist错误的解决方法
  2. 2021年7月券商App行情刷新及交易体验评测报告
  3. 2020平均薪资什么水平?
  4. 全网最全最明白的全球运营商无线网络频段分布2G/3G/4G说明及国内NB-IoT的网络部署频段说明
  5. P1320 压缩技术(续集版)-C语言
  6. openresty设置error_page
  7. js 实现用div 上下分屏
  8. 【JaveWeb】JavaWeb
  9. 玫瑰花数java代码_c语言如何输出玫瑰花数?(代码示例)
  10. 基于springboot的旅游景点管理系统