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