diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/bean/PermissionEntity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/bean/PermissionEntity.kt index 6bf5849bc..19358af4c 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/bean/PermissionEntity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/bean/PermissionEntity.kt @@ -38,12 +38,6 @@ enum class PermissionEntity( Manifest.permission.GET_ACCOUNTS ) ), - WINDOW( - "悬浮窗", - "悬浮窗口显示在其他应用上层", - R.drawable.icon_permission_common, - arrayOf(Manifest.permission.SYSTEM_ALERT_WINDOW) - ), MICROPHONE( "录音", "录制音频", diff --git a/app/src/main/java/com/yizhuan/erban/utils/PermissionUtil.kt b/app/src/main/java/com/yizhuan/erban/utils/PermissionUtil.kt index 9b411fe95..8f2196cc5 100644 --- a/app/src/main/java/com/yizhuan/erban/utils/PermissionUtil.kt +++ b/app/src/main/java/com/yizhuan/erban/utils/PermissionUtil.kt @@ -1,15 +1,11 @@ package com.yizhuan.erban.utils -import android.Manifest -import android.app.AppOpsManager import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.net.Uri -import android.os.Binder import android.os.Build -import android.provider.Settings import com.microquation.linkedme.android.v4.ContextCompatLKMe import com.yizhuan.erban.BuildConfig import com.yizhuan.erban.ui.setting.bean.PermissionEntity @@ -31,12 +27,8 @@ class PermissionUtil { it } else { it.filter { s -> - val granted = ContextCompatLKMe.checkSelfPermission(context, s) == PackageManager.PERMISSION_GRANTED - if (s == Manifest.permission.SYSTEM_ALERT_WINDOW) { - granted && checkFloatPermission(context) - } else { - granted - } + ContextCompatLKMe.checkSelfPermission(context, s) == + PackageManager.PERMISSION_GRANTED } } } @@ -59,58 +51,7 @@ class PermissionUtil { else -> toCommonPermission(context) } } - - - //悬浮窗权限判断 - private fun checkFloatPermission(context: Context): Boolean { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) - return true - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - try { - val contextClazz = Context::class.java - val declaredField = contextClazz.getDeclaredField("APP_OPS_SERVICE") - declaredField.isAccessible = true - val filedValue = declaredField.get(contextClazz) - if (filedValue !is String) { - return false - } - val methodValue = contextClazz.getMethod("getSystemService", String::class.java) - .invoke(context, filedValue) - val osManagerClazz = Class.forName("android.app.AppOpsManager") - val filedMode = osManagerClazz?.getDeclaredField("MODE_ALLOWED") - filedMode?.isAccessible = true - val checkOpMethod = osManagerClazz.getMethod( - "checkOp", - Integer.TYPE, - Integer.TYPE, - String::class.java - ) - val result = checkOpMethod?.invoke( - methodValue, - 24, - Binder.getCallingUid(), - context.packageName - ) - return result == filedMode?.getInt(osManagerClazz) - } catch (e: Exception) { - return false - } - } else { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val appOpsMgr = - context.getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager - val mode = appOpsMgr?.checkOpNoThrow( - "android:system_alert_window", android.os.Process.myUid(), context - .packageName - ) - mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGNORED - } else { - Settings.canDrawOverlays(context) - } - } - } - - + private fun toHuaWeiPermission(context: Context) { try { val intent = Intent()