我試圖設置我的應用程序以使用運行時權限。我的請求對話框顯示正常,但是當我在對話框中選擇「接受」,並調用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