2017-06-21 16 views
0

私のアプリケーションには5つのアクセス権が必要です。アプリはそれだけで最初に許可し、残りないために尋ねる実行するとAndroid:複数のアクセス権を要求する場合、最初のアクセス権のみが要求されます。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 

      } 
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 2); 
      } 
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{android.Manifest.permission.CAMERA}, 3); 
      } 
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{android.Manifest.permission.GET_ACCOUNTS}, 4); 
        } 

      if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{android.Manifest.permission.READ_CONTACTS}, 5); 
      } 
    } 

:これは私が私の活動の1ののonCreate()に追加したコードです。 私はまた、要求権限関数の配列としてすべての権限を提供しましたが、最初の権限のポップアップも表示されています。

助けてもらえますか?私は私のターゲットとSDKのバージョンをコンパイルするには、26

+1

必要なすべてのアクセス権の単一の 'String []'で 'requestPermissions()'を1回呼び出します。 'String []'をカスタマイズして、必要なパーミッションだけを持つようにしてください。 [このサンプルアプリケーション](https://github.com/commonsguy/cw-omnibus/tree/v8.6/Permissions/tutorial/finish/RuntimePermTutorial)を参照してください。 – CommonsWare

+0

既に同じ問題が見られましたが、私は質問 – Sid

+0

でそれを言及しました。おそらくあなたはそれを間違ったのでしょうか、あるいは既にあなたはすでに他の権限を持っています。このサンプルアプリケーション(https://github.com/commonsguy/cw-omnibus/tree/v8.6/Permissions/tutorial/finish/RuntimePermTutorial)、[このサンプルアプリケーション](https:// github .com/commonsguy/cw-omnibus/tree/v8.6/Media/AudioRecording)、私は問題なく複数の権限を要求します。 – CommonsWare

答えて

0

これを行うで、AndroidのMデバイス上で自分のアプリケーションを実行しています:

int PERMISSION_ALL = 1; 
    String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA, Manifest.permission.GET_ACCOUNTS, Manifest.permission.READ_CONTACTS}; 

    if(!hasPermissions(this, PERMISSIONS)){ 
     ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); 
    } 
0

あなたはこのように行うことができます。

requestPermissions(new String[]{ 
          Manifest.permission.READ_CONTACTS, 
          Manifest.permission.ACCESS_FINE_LOCATION}, 
        ASK_MULTIPLE_PERMISSION_REQUEST_CODE); 

をかTed permissonを使用しますライブラリ

関連する問題