我试图设置我的应用程序以使用运行时权限。我的请求对话框显示正常,但是当我在对话框中选择“接受”,并调用onRequestPermissionsResult时,grantResults不显示PERMISSION_GRANTED,并且应用程序没有获得权限。下面是我如何请求权限:Android运行时权限 - 用户授予权限,没有在onRequestPermissionsResult中接收它的权限
ActivityCompat.requestPermissions((Activity) contnext,
new String[]{Manifest.permission.MANAGE_DOCUMENTS, Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
而且回调:
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode){
case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE:
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// do good stuff
Log.i("net.bradmont.prayson", "Permissions granted by user");
} else {
Log.i("net.bradmont.prayson", "Permissions refused by user");
Log.i("net.bradmont.prayson", "grantResults.length " + grantResults.length);
for (int i = 0; i < grantResults.length; i++){
Log.i("net.bradmont.prayson", "grantResults[" + i +"]" + grantResults.length);
}
Snackbar snackbar1 = Snackbar.make(mCoordinator,
R.string.cant_open_file_no_permission, Snackbar.LENGTH_LONG);
snackbar1.show();
}
}
}
结果是接受的权限对话框后,应用程序显示错误小吃吧。下面是什么logcat中显示:
net.bradmont.prayson I Permissions refused by user
I grantResults.length 2
I grantResults[0]2
I grantResults[1]2
我甚至不能找出2将在grantResults表示; PackageManager文档中值为2的唯一常量是COMPONENT_ENABLED_STATE_DISABLED和GET_RECEIVERS。
这到底是怎么回事?
摆脱MANAGE_DOCUMENTS'的' - 因为你不能认为反正权限 - 看看会发生什么。 – CommonsWare