2016-03-03 365 views
2

我想授予权限Manifest.permission.MANAGE_DOCUMENTS,但是当我运行该应用程序时,应该会显示权限的对话框,但不会显示。这里是我的代码:如何授予权限Manifest.permission.MANAGE_DOCUMENTS android 6.0

int hasCameraPermission = ContextCompat.checkSelfPermission(MemoryDetail.this, Manifest.permission.MANAGE_DOCUMENTS); 
if (hasCameraPermission != PackageManager.PERMISSION_GRANTED) { 
    if (!ActivityCompat.shouldShowRequestPermissionRationale(MemoryDetail.this, Manifest.permission.MANAGE_DOCUMENTS)) { 
     showDialogMessage("Need use permission: MANAGE_DOCUMENTS", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
        requestPermissions(new String[] {Manifest.permission.MANAGE_DOCUMENTS}, Database.PICK_PICTURE); 
       } 
      } 
     }); 

    } 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     requestPermissions(new String[]{Manifest.permission.MANAGE_DOCUMENTS}, Database.PICK_PICTURE); 
    } 
    return; 
} 
+1

您是否检查过您是否可以执行需要该权限的任务?如果您已经拥有该权限,则不会出现对话框。 – curob

+0

我已经在Manifest中声明了许可。如果我使用其他权限,例如:CAMERA,CONTACTS ...它工作得很好。如果我不使用此权限,则会显示以下错误:java.lang.SecurityException:Permission Denial:从ProcessRecord {87433d2 4941:com.devil.tetmemory/u0a86}(pid = 4941, uid = 10086)需要android.permission.MANAGE_DOCUMENTS或android.permission.MANAGE_DOCUMENTS。 – mytruong

回答

4

MANAGE_DOCUMENTSsignature -level许可。普通的Android应用程序不能容纳它。只有使用签署固件的相同签名密钥签署的应用才能保存它。

+0

你可以给我更多的细节信息,并告诉我如何解决这个错误。谢谢。 – mytruong

+0

@mytruong:您通过从清单和Java代码中删除MANAGE_DOCUMENTS权限来“解决此错误”。您不能拥有该权限。 – CommonsWare

+1

我使用Facebook API从我的应用程序分享文章。当我运行应用程序时,它有这个错误,所以我在Manifest和java代码中添加了这个权限。如果我在6.0版本下运行android,例如:5.0,4.4 ...它工作得很好。我已经做了同样的帮助,但它仍然无法运行@CommensWare。 – mytruong