settingscompat icon indicating copy to clipboard operation
settingscompat copied to clipboard

特殊权限(Special Permissions)兼容库,悬浮窗权限(SYSTEM_ALERT_WINDOW)与系统设置修改权限(WRITE_SETTINGS)

Results 13 settingscompat issues
Sort by recently updated
recently updated
newest added

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如下 ![p-errror](https://user-images.githubusercontent.com/5959435/33467002-876bbb82-d68c-11e7-81f8-934db0af5e41.png)

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; }