Android 懸浮窗權限校驗
阿新 • • 發佈:2018-10-26
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 懸浮窗權限校驗