3
由於我可以使用Settings.canDrawOverlays
來檢查用戶是否在API> = 23上授予此權限,因此我如何檢查用戶是否在舊版APIS上擁有此權限?Settings.canDrawOverlays for API <23
此權限是否自動授予API < 23並且無需檢查它?
目前,我只在授予權限後纔開始使用API 23+。
@SuppressLint("NewApi")
public void checkDrawOverlayPermission() {
if(Build.VERSION.SDK_INT >= 23) {
/** check if we already have permission to draw over other apps */
if (!Settings.canDrawOverlays(this)) {
/** if not construct intent to request permission */
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
/** request permission via start activity for result */
startActivityForResult(intent, REQUEST_CODE);
} else {
startService(new Intent(this, ChatHeadService.class));
}
}
}
但是如果用戶在API < = 22上怎麼辦?我如何確保應用程序不會崩潰,並且我的服務將開始?
無需在Marshmallow下面申請此權限,以便在這些系統上運行您的服務是安全的。您可以在那裏默認繪製疊加層。 – mhenryk
酷感謝@ @ mhenryk – TheUnreal
當然,您需要清單中的許可,但對於每個平臺都是如此,我認爲您已經涵蓋了這些內容。作爲參考,它也是_ <使用權限android:name =「android.permission.SYSTEM_ALERT_WINDOW」/> _權限 – mhenryk