自学内容网 自学内容网

Android15默认授权浮窗权限

我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮窗权限这个需求

    /**
     * 授权[显示在其他应用的上层]权限,浮窗权限,Android 15,API 35验证有效
     * android:sharedUserId="android.uid.system"
     *
     * @param context 上下文
     * @param pkg     包名:com.pranavpandey.rotation
     * @param isGrant 授权:true,取消授权:false
     */
    private static void grantSystemAlertWindowPermission(Context context, String pkg, boolean isGrant) {
        Log.e(TAG, "----liyiwei---- 请求开启或者关闭浮窗权限: " + pkg + " " + isGrant);
        try {
            ApplicationInfo applicationInfo = context
                    .getPackageManager()
                    .getApplicationInfo(pkg, PackageManager.GET_ACTIVITIES);
            int uid = applicationInfo.uid;
            Log.e(TAG, "----liyiwei---- 要开启浮窗权限的应用的uid为: " + uid + " " + pkg);

            AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
            appOpsManager.setUidMode("android:system_alert_window",
                    uid,
                    isGrant ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_DEFAULT);
            Log.e(TAG, "----liyiwei---- 变更浮窗权限状态成功");
        } catch (PackageManager.NameNotFoundException e) {
            Log.e(TAG, "----liyiwei---- 开启浮窗权限失败: " + e);
        }
    }

如果以上内容对您有所帮助,欢迎打赏,如果有任何疑问也欢迎指点一二,相互学习
在这里插入图片描述


原文地址:https://blog.csdn.net/qq_15050521/article/details/148530964

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!