2016-10-07 8 views
3

Settings.canDrawOverlaysを使用して、API> = 23でこの権限を付与されているかどうかを確認できるので、ユーザーが古いAPISにあるかどうかを確認できますか?APIの設定.canDrawOverlays <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

ありがとうございます。@ @mryryk – TheUnreal

+0

もちろん、マニフェストの許可が必要ですが、これはすべてのプラットフォームで当てはまります。あなたのアプリを公開してGoogle Playストアで署名された場合は、参照のために_ _許可 – mhenryk

答えて

0

オーバーレイパーミッションは、マーシュマロー、すなわちAPI23以上でのみ必要です。以前のAPIでは、この権限はデフォルトで提供されています。

関連する問題