settingscompat
settingscompat copied to clipboard
特殊权限(Special Permissions)兼容库,悬浮窗权限(SYSTEM_ALERT_WINDOW)与系统设置修改权限(WRITE_SETTINGS)
SettingsCompat.manageDrawOverlays(this);使用这个去开启悬浮窗权限,直接闪退了,但是通过修改系统设置可以配置,那样就不能适配其他的机型了。
java.lang.SecurityException Permission Denial: starting Intent { act=com.meizu.safe.security.SHOW_APPSEC flg=0x10000000 cmp=com.meizu.safe/.security.AppSecActivity (has extras) } from ProcessRecord{a1b8476 17907:com.datedu.pptAssistant/u0a331} (pid=17907, uid=10331) not exported from uid 1000 ezy.assist.compat.SettingsCompat.startSafely(SettingsCompat.java:147) -- 13 ezy.assist.compat.SettingsCompat.manageDrawOverlaysForFlyme(SettingsCompat.java:238) 14 ezy.assist.compat.SettingsCompat.manageDrawOverlaysForRom(SettingsCompat.java:96) 15 ezy.assist.compat.SettingsCompat.manageDrawOverlays(SettingsCompat.java:69)...
OPPO R9 PLusm A Android6.0.1 点击去授权崩溃.log如下 
Caused by java.lang.NullPointerException: Attempt to invoke a virtual method on a null object reference at a.a.a.a.b(RomUtil.java:128) at a.a.a.a.a(RomUtil.java:101) at a.a.a.a.b(RomUtil.java:58)
悬浮窗默认前台有权限,App切到后台没权限了`(onPause()`有权限,`onStop()`就没有了)
Android 版本为 5.1 API 为 22 断点后发现,isEmui方法判断是否为华为手机时,RomUtil#check方法中,sName为“HUAWEI”而不是“EMUI”,因此没有执行相关的悬浮窗开启界面跳转逻辑
测试了很多种方式,刚开打应用时获取是正确的,不关闭应用,再次检测就一直是失败的了,看来是被vivo自己写的permissionmanager给管理起来了,通过系统获取已经不可靠了。
添加设置悬浮窗权限成功后,需要设置一些操作
经测试,这样可以跳转到vivo x9s这个app的管理页,不过不能管理app的推送通知的设置,不知谁知道如果调整到推送通知的管理页 Intent intent = new Intent(); intent.putExtra("packagename",context.getPackageName()); intent.putExtra("title","test"); //i管家包名 6.0有不相同的两款手机 intent.setComponent(ComponentName.unflattenFromString("com.iqoo.secure/.safeguard.SoftPermissionDetailActivity")); if (startSafely(context,intent)){ return; } intent.setComponent(ComponentName.unflattenFromString("com.vivo.permissionmanager/.activity.SoftPermissionDetailActivity")); if (startSafely(context,intent)){ return; }