Android读取和申请其他应用的悬浮窗权限

1、读取悬浮窗权限

    @SuppressLint("WrongConstant")
    public boolean checkStoragePermissions(Context context, String packageName) {
        AppOpsManager appOpsMgr = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
        if (appOpsMgr == null) {
            return false;
        }
        PackageManager pm = context.getPackageManager();
        try {
            ApplicationInfo ai = pm.getApplicationInfo(packageName, PackageManager.GET_ACTIVITIES);
            int mode = appOpsMgr.checkOpNoThrow(AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOW, ai.uid, packageName);
            return mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGNORED;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return false;
    }

2、跳转到应用悬浮窗权限申请界面

Intent i = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + packageName));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

你可能感兴趣的:(android,android)