美文网首页
【Android】应用自授权悬浮窗权限(系统签名)

【Android】应用自授权悬浮窗权限(系统签名)

作者: littlefogcat | 来源:发表于2023-03-21 16:45 被阅读0次

具有系统签名的应用,通过 AppOpsManager 授予悬浮窗权限。
https://stackoverflow.com/a/68588681/12611441

@TargetApi(Build.VERSION_CODES.KITKAT)
public static void autoSetOverlayPermission(Context context, String packageName) {
    PackageManager packageManager = context.getPackageManager();
    int uid = 0;
    try {
        ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
        uid = applicationInfo.uid;
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
        return;
    }

    AppOpsManager appOpsManager = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
    final int OP_SYSTEM_ALERT_WINDOW = 24;
    try {
        Class clazz = AppOpsManager.class;
        Method method = clazz.getDeclaredMethod("setMode", int.class, int.class, String.class, int.class);
        method.invoke(appOpsManager, OP_SYSTEM_ALERT_WINDOW, uid, packageName, AppOpsManager.MODE_ALLOWED);
        Log.d(Const.LOG_TAG, "Overlay permission granted to " + packageName);
    } catch (Exception e) {
        Log.e(Const.LOG_TAG, Log.getStackTraceString(e));
    }
}

相关文章

网友评论

      本文标题:【Android】应用自授权悬浮窗权限(系统签名)

      本文链接:https://www.haomeiwen.com/subject/ujmmrdtx.html