Android 懸浮窗權限校驗

懸浮窗權限:android

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

權限檢驗和請求:ui

//檢查是否已經授予權限,大於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{
                //已經有權限,能夠直接顯示懸浮窗
            }

其餘注意問題:this

//由於部分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;
        }
相關文章
相關標籤/搜索