我的问题


       在借鉴了网上各路大佬的成果后,发现在Android 10以上大家对自启权限和白名单权限的资料甚少。以至于不能直接通过Copy来解决问题,在华为P20、P30和OPPO Reno Ace等手机上,不能通过各路大佬的代码来引导用户进入相关权限的设置页面。

解决方案


       经过一番度娘后,发现有两种方式可以获取栈顶页面的包名和类名,分别是adb和AccessibilityService,由于我没有真机不好进行adb连接,只有通过自己实现一个AccessibilityService应用,以悬浮窗的方式来显示栈顶页面的包名和类名。

实践过程


  1. 申请阿里云EMAS移动测试权限;


2. 实现AccessibilityService查看包名类名应用;

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <serviceandroid:name=".TrackerService"android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"><intent-filter><action android:name="android.accessibilityservice.AccessibilityService"/></intent-filter><meta-dataandroid:name="android.accessibilityservice"android:resource="@xml/accessibility_service_config"/></service>
public class TrackerService extends AccessibilityService {public static final String TAG = "TrackerService";@Overridepublic void onCreate() {super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.d(TAG, "onStartCommand");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onInterrupt() {}@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {CharSequence packageName = event.getPackageName();CharSequence className = event.getClassName();if (!TextUtils.isEmpty(packageName) && !TextUtils.isEmpty(className)) {Log.d(TAG, "Do something");}}}@Overridepublic void onDestroy() {super.onDestroy();Log.d(TAG, "onDestroy");}}

3.在EMAS平台上选择相应的机型,上传应用,打开到设置自启动的页面,通过悬浮窗即可看到当前页面的包名和类名;

我的成果


华为P20、P30
-----------------------------------------------------------------------
自启权限:
com.huawei.systemmanager
com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivityOPPO Reno Ace权限相关设置:
-----------------------------------------------------------------------
关闭闲置应用:
com.coloros.safecnter
.appfrozen.activity.AppFrozenSettingActivity自定义耗电保护:
com.coloros.oppoguardelf
com.coloros.powermaneger.fuelgaue.PowerUsageModelActivity自启权限:
com.coloros.safecenter
.startupapp.StartupAppListActivity关联启动:
com.coloros.safecenter
.startupapp.AssociateStartActivity普通权限设置页面:
com.coloros.securitypermission
.permission.PermissionGroupsActivity中兴-ZTE V1000-9:
-----------------------------------------------------------------------
电池优化:
com.zte.powersavemode
.appspowersave.AppManagerActivityMFV

使用:

var intent = Intent()
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
var componentName: ComponentName? = null
if (Build.BRAND.equals("Huawei")) {componentName = ComponentName("com.huawei.systemmanager","com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity")
}
intent.component = componentName
context.startActivity(intent)

感谢各路大佬无私的奉献,下一个解决问题是,实时监听悬浮窗权限是否打开?没有打开时在后台启动设置页面,可以实现无论用户是否打开权限都可以限制用户正常使用手机。

解决OPPO Reno Ace(Android 10)、华为P20、P30进入自启权限设置页面问题,通过AccessibilityService获取栈顶Activity和相应的包名以及类名相关推荐

  1. android 获取栈顶activity,Android : 如何得到Activities栈顶的Activity名称

    众所周知,Android中的任务等等都是通过栈来管理的,Activities的管理也不例外.栈这种数据结构是大家再熟悉不过了.它的先进后出特性让Android可以很容易实现从当前Activity回到或 ...

  2. android 华为开发权限管理,android开发 华为 点击跳转到权限管理页面

    private void goHuaWeiSetting()  { try { //HUAWEI H60-l02 P8max测试通过 Log.d(MainActivity.class.getSimpl ...

  3. 【Android开发】 获取手机上的各种apk的包名和类名,实现跳转到其他应用

    应用装在手机上 情况一:使用Android 调试桥 (adb) 使用数据线连接电脑,并打开 USB 调试,找到你的Android-SDK所在 如我的:"D:\Android\Sdk\plat ...

  4. android 获取栈顶activity,android获取当前栈顶的activity

    在Application的onCreate方法中: @Override public void onCreate() { registerActivityLifecycleCallbacks(new ...

  5. 全球最快65W闪充!OPPO Reno Ace正式发布 高达限量定制版售价仅3599元

    10月10日,OPPO正式发布5款新品.其中,OPPO Reno Ace凭借90Hz电竞屏和全球量产最快的手机充电技术65W 超级闪充而备受关注,同期推出的高达40周年定制版手机更是吸引了广大ACG饭 ...

  6. pro缺点和不足 一加7t_一加7T与OPPO Reno Ace 各有优势与缺点

    半年,安卓机皇一加 7pro 抢足了风头,那么作为一加手机迭代产品,一加 7T 相比一加 7 来说提升不小. 凭借 65W SuperVOOC 2.0 超级闪充这一强力卖点,以及一系列确实堪称&quo ...

  7. OPPO Reno Ace、一加7T和realme X2 Pro对比,究竟谁才是真香机?

    近来绿厂有很大的动作,有关它的三款手机,OPPO Reno Ace.realme X2 Pro和一加7T分别发布引起了很大的波澜,有惊喜.惊讶甚至还有失望,那么这三部手机究竟如何呢? 首先我们来看看三 ...

  8. Android开发之获取当前展示的activity的包名,类名

    在进行Android开发学习过程中,有时候我们想实现这种功能: 从自己写的小应用里启动其它APP. 这听起来似乎很简单,使用intent的隐式启动就可以了. Intent intent = new I ...

  9. android权限设置在哪找,Android权限申请与打开权限设置页面

    前言 应用的使用需要申请权限,但是如果用户禁用掉,或者禁用并不再提醒就必须到系统设置中开启. // 权限 implementation 'com.yanzhenjie:permission:2.0.3 ...

最新文章

  1. ubuntu package XXX needs to be reinstalled,but I can't find an archive 问题修复
  2. threeJS 中数学相关内容
  3. 如何发现优秀的IT开发人员
  4. 如何用原生js替换字符串中的某个字符(或字符串)为指定的字符串?
  5. etal斜体吗 参考文献_参考文献类有关论文范例,与日语文提纲2016年,日语文提纲科目相关本科毕业论文范文...
  6. 如何访问云端的tcpserver_远程读写FTP文件,花生壳盒子+Serv-U快速实现远程访问...
  7. 牛客网_PAT乙级_1025插入与归并(25)
  8. vue.js axios实现跨域http请求接口
  9. 5005.boost之asio简单反射型服务器客户端
  10. android+警告声音,android – 如何使用带有setAudioAttributes的警报音量播放铃声?
  11. php opcache文件还原,php7使用opcache把编译后的php文件存储为文件,实现php源码保护和脚本加速...
  12. c语言中的钩子函数,生命周期(vue的钩子函数)
  13. “颠覆”——物联网 + 大数据 + 云计算+ 网络互连
  14. 接触Firefox的xpi
  15. linux crontab每小时运行一次
  16. oracle 表变化监控,oracle 怎么 监控数据变化
  17. C语言后缀.h文件和.c文件作用和区别
  18. MCS-51的中断系统
  19. HTB-baby BoneChewerCon
  20. Intel 14nm工艺生产线即将上马

热门文章

  1. ESP8266学习笔记7:保存和读取自定义参数
  2. 【例题】Python日志记录操作
  3. 统计学习方法详解之第一章统计方法及监督学习概论
  4. 锁定计算机后怎么解锁,我的电脑IP被锁定了怎么办
  5. 将CRFaRNN移植到最新版Caffe上
  6. photoshop人像精修
  7. 利用网络劫持解决微信远程真机调试Api问题
  8. Java实现二叉树的创建与四种遍历方式(前,中,后,层)
  9. 检测java是否连接到SQL server数据库 + SQL server数据库内置账户sa无法登录
  10. 华为P50/P50Pro怎么解锁HAUWEI P50pro屏幕锁开机锁激活设备锁了应该如何强制解除鸿蒙系统刷机解锁方法流程步骤不开机跳过锁屏移除锁定进系统方法经验