0

私はこれを完全に理解していません。したがって、< = 21 APIバージョンの場合は、許可をリクエストするのにAndroidManifest.xmlを使用することができますが、Lollipop以上のAPIではRequesting permission on runtimeという特長があります。だから私は、このsimpeコードとそれを使用しています:デフォルトで許可が与えられます

if (Build.VERSION.SDK_INT >= 23) { 
    mPermissionsToBeAsked.clear(); 
    for (String permission : AudioRecordingThread.PERMISSIONS_NEEDED) { 
     if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { 
      mPermissionsToBeAsked.add(permission); 
     } 
    } .... 

次に、そのリストは、私はそれらを要求してる空でない場合:

if (mPermissionsToBeAsked.size() > 0) { 
    requestPermissions(mPermissionsToBeAsked.toArray(new String[0]), AUDIO_PERMISSIONS_REQUEST_CODE); 
} 

をしかし、何らかの理由で、デバイス上で、例えばAndroidの6.0.1のSamsung Galaxy S7、のように、アプリがインストールされたときにデフォルトで許可されたすべての権限。だから私は理由を知りたいのですが、アプリケーションマネージャでアプリケーションに行って、マイクパーミッションを手動で削除すると、checkSelfPermission(permission)はまだの返品を受けています。だから、質問:

  1. なぜAPIレベルのロリポップと高いのデバイス上のすべての権限は、まだデフォルトで付与され、コードの上にmPersmissionToBeAskedに何も追加しないのだろうか?
  2. アプリケーションマネージャーのタイトルMICROPHONEで手動で権限を削除すると、checkSelfPermission(android.permission.RECORD_AUDIO)はまだGRANTEDを返しますか?

答えて

1

ただ、クロスアプリのGradleのファイルにtargetsdkのバージョンを確認することが許可よりも23未満の場合は22

defaultConfig { 
     // ----- 
     targetSdkVersion 23 
     //---- 
    } 

より大きい自動的にアプリに付与されます。

1

まずAndroid M以上では、許可を受け取ります。それはあなたが持っている必要があることを意味します

targetSdkVersion 23 

またはそれ以上。それ以外の場合、システムは開発者がこのバージョンをターゲットにしていないとみなします。つまり、開発者は権限をチェックしません。

関連する問題