自启动&关联启动

当前自启动

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,429评论 25 707
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,396评论 2 45
  • 4月3日 犹犹豫豫,终于决定提笔却又不知从何说起。从未想过癌症离自己的生活这么近,今天是妈妈第一次化疗的第二天,还...
    小熙仔阅读 347评论 0 0
  • 累了不能休息,生病不能请假,把自己活成一个机器人才能达到领导和公司的要求。永远高效,永不疲惫!
    付知阅读 189评论 0 0
  • 曾经有好几个朋友警告我,要把我朋友圈给屏蔽了,因为我总是在他们苦逼搬砖时晒各种吃喝玩乐的图。我知道他们纯属羡慕嫉妒...
    心之音阅读 348评论 1 1