1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 解决OPPO Reno Ace(Android 10) 华为P20 P30进入自启权限设置页面问题 通过Ac

解决OPPO Reno Ace(Android 10) 华为P20 P30进入自启权限设置页面问题 通过Ac

时间:2020-07-11 03:29:38

相关推荐

解决OPPO Reno Ace(Android 10) 华为P20 P30进入自启权限设置页面问题 通过Ac

我的问题

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

解决方案

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

实践过程

申请阿里云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.systemmanagercom.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivityOPPO Reno Ace权限相关设置:-----------------------------------------------------------------------关闭闲置应用:com.coloros.safecnter.appfrozen.activity.AppFrozenSettingActivity自定义耗电保护:com.coloros.oppoguardelfcom.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? = nullif (Build.BRAND.equals("Huawei")) {componentName = ComponentName("com.huawei.systemmanager","com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity")} ponent = componentNamecontext.startActivity(intent)

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。