2017-06-21 212 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