2016-10-07 86 views
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上怎麼辦?我如何確保應用程序不會崩潰,並且我的服務將開始?

+0

無需在Marshmallow下面申請此權限,以便在這些系統上運行您的服務是安全的。您可以在那裏默認繪製疊加層。 – mhenryk

+0

酷感謝@ @ mhenryk – TheUnreal

+0

當然,您需要清單中的許可,但對於每個平臺都是如此,我認爲您已經涵蓋了這些內容。作爲參考,它也是_ <使用權限android:name =「android.permission.SYSTEM_ALERT_WINDOW」/> _權限 – mhenryk

回答

0

疊加許可只需要棉花糖,即API 23及以上。在以前的API中,此權限是默認提供的。

相關問題