1. 程式人生 > >Android 懸浮窗權限校驗

Android 懸浮窗權限校驗

out int params 執行 兼容 miss new 一次 -perm

原文:Android 懸浮窗權限校驗

懸浮窗權限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

權限檢驗和請求:


            //檢查是否已經授予權限,大於6.0的系統適用,小於6.0系統默認打開,無需理會

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M&&!Settings.canDrawOverlays(this)) {
                //沒有權限,需要申請權限,因為是打開一個授權頁面,所以拿不到返回狀態的,所以建議是在onResume方法中從新執行一次校驗
                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
                intent.setData(Uri.parse("package:" + getPackageName()));
                startActivityForResult(intent, 100);
            }else{
                //已經有權限,可以直接顯示懸浮窗
            }
        

其他註意問題:

        //因為部分type在部分系統中已經廢棄,懶得看文檔,下面是我親測是兼容7.0和8.0系統的方法

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
            wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
        } else {
            wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        }

?

Android 懸浮窗權限校驗