2017-06-21 211 views
0

我需要5個權限用於我的應用程序。這是我已經添加到我的活動1的onCreate()代碼: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); 
      } 
    } 

當應用程序運行時,它只是詢問的第一個權限,而不是其餘。 我也提供了所有權限作爲數組的請求權限功能,但我也看到只有第一個權限彈出。

有人可以請幫忙。我正在我的應用程序的版本的Android M設備上,我的目標和編譯SDK版本是26

+1

使用您需要的所有權限的單個String []來調用'requestPermissions()'一次。自定義'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

做到這一點:

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