android 7.0 关联启动,自启动关联启动
当前自启动
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 关联启动,自启动关联启动相关推荐
- Android 4.0 ICS SystemUI浅析——SystemUI启动流程
阅读Android 4.0源码也有一段时间了,这次是针对SystemUI的一个学习过程.本文只是对SystemUI分析的一个开始--启动流程的分析,网上有很多关于2.3的SystemUI的分析,可4. ...
- android 获取快捷开关_干货水帖:Android 6.0 如何从快速开关面板启动微信扫一扫?...
自从 iOS 开放了 Widget 接口之后,很多「勇士」就探索 Widget 的各种可能性.比如前段时间很火的 Steve,让你不开锁屏就能玩到 Chrome 中内置的恐龙跳小游戏. iOS 的 W ...
- Android 9.0 在init.rc中启动一个服务
现在有一个blink .bin文件,需要拷贝到/system/bin/目录下面去,然后再init.rc文件中启动该服务 一.init.rc文件中启动服务 1.在init.rc文件中启动服务 代码路径: ...
- Android 10.0 framework根据允许app启动白名单限制其他app启动
目录 1.概述 2.framework根据白名单启动app的相关核心代码 3.framework根据白名单启动app的相关核心代码
- android 8.0以后(sdk26)启动前台服务的问题探究
https://blog.csdn.net/sinat_20059415/article/details/80584487 转载于:https://www.cnblogs.com/antble/p/1 ...
- 前台如何正确接收流信息_如何绕过 Android 8.0 startService 限制?
❝ 应用在后台运行时,会消耗一部分有限的设备资源,例如 RAM.这可能会影响用户体验,如果用户正在使用占用大量资源的应用(例如玩游戏或观看视频),影响会尤为明显.为了提升用户体验,Android 8. ...
- android微信电话锁屏,解决 Android 7.0 系统中,微信无法在锁屏画面显示
文章版块:HTC One A9 在 Android 7.0 系统中htc手机微信怎么截屏htc手机微信怎么截屏,会出现微信无法在锁屏画面显示的状况.建议您进行下面修改就可以解决: 进入"HT ...
- Android 4.0 ICS SystemUI浅析——StatusBar加载流程分析
前面两篇文章< Android 4.0 ICS SystemUI浅析--SystemUI启动流程>.< Android 4.0 ICS SystemUI浅析--StatusBar结构 ...
- Android 4.0 ICS SystemUI浅析——StatusBar结构分析
在上一篇文章<Android 4.0 ICS SystemUI浅析--SystemUI启动流程>中以及提到了SystemUI的组成,本文主要分析其中的StatusBar结构. 1.布局概览 ...
最新文章
- Java过滤器与SpringMVC拦截器之间的关系与区别
- 第二篇:salt-api使用填坑指南
- fftw_plan_dft_2d异常 使用技巧
- Java_StringBuffer类
- android 访问sqlite,android中访问已有的sqlite数据库
- android中的shape资源,Android Drawable资源讲解之shape篇
- ninjala还是显示服务器维护,Ninjala更新2.0版本 调整了武器平衡以及BUG修复
- 【数据结构笔记21】图的遍历,DFS与BFS,连通图
- 学习《让UpdatePanel支持文件上传》系列文章的相关链接
- 信息技术c语言试题,全国信息技术水平考试C语言考试试卷.doc
- 【小程序合集】来一组适合你的表情包-表情包大全
- Excel下的数据挖掘:学生成绩统计分析实战之总体分析
- 0x80070057复制从服务器复制文件,解决win10更改用户文件夹提示0x80070057的方法
- 学计算机系的考公好考吗,最适合考公务员的十大专业,学个好专业,考公很容易!...
- TensorFlow从1到2(十一)变分自动编码器和图片自动生成
- 用户注册及APP使用隐私协议
- 怎样成为“吃鸡”沙漠霸主?掌握资源点是关键
- 实验二 贪吃蛇的游戏开发
- Web服务器python编程
- 基于STM32的电机--直流有刷电机H桥驱动的不同模式分析