天天看點

Android 懸浮窗權限校驗

原文: 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;
        }           

繼續閱讀