2017-02-28 63 views
0

在我的咖啡测试@Before我使用如何一次性授予所有android权限?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     getInstrumentation().getUiAutomation().executeShellCommand(
       "pm grant " + getTargetContext().getPackageName() 
         + " android.permission.SEND_SMS"); 

有没有什么办法可以授予多个权限(或所有权限)只用单一的命令?

此外撤销permsission杀死应用程序,并导致测试failure.Is有任何解决方法呢?

回答

1

试试这个,

private static final int REQUEST_STORAGE = 112; 


     if (Build.VERSION.SDK_INT >= 23) { 
      String[] PERMISSIONS = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE};//Add all permission here 
      if (!hasPermissions(mContext, PERMISSIONS)) { 
       ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST_STORAGE); 
      } else { 
       //TO Do 
      } 
      } else { 
       //TO Do 
      } 

获取权限结果

 @Override 
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
      switch (requestCode) { 
       case REQUEST_STORAGE: { 
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

         //To Do 
        } else { 
         Toast.makeText(mContext, "The app was not allowed.", Toast.LENGTH_LONG).show(); 
        } 
       } 
      } 
     } 

的棉花糖检查权限

private static boolean hasPermissions(Context context, String... permissions) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
      for (String permission : permissions) { 
       if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
        return false; 
       } 
      } 
     } 
     return true; 
    } 
1

试试这个。它会帮助你。

public boolean hasPermissions(Context context, String[] permissions) { 
     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
      for (String permission : permissions) { 
       if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { 
        return false; 
       } 
      } 
     } 
     return true; 
    } 


    public void givePermisson(){ 
     int PERMISSION_ALL = 1; 
     String[] PERMISSIONS = {Manifest.permission.READ_CONTACTS, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_SMS, Manifest.permission.CAMERA,Manifest.permission.RECEIVE_SMS}; 

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

您可以授予安装的所有运行时权限,方法是使用;

adb install -g

或者只是使用';'之间每个下午补助这样?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    getInstrumentation().getUiAutomation().executeShellCommand(
      "pm grant " + getTargetContext().getPackageName() 
        + " android.permission.SEND_SMS;" 

      + "pm grant " + getTargetContext().getPackageName() 
        + " android.permission.WRITE_EXTERNAL_STORAGE" 

);