0
READ_EXTERNAL_STORAGE権限を取得しようとしています。ここにここに私のコード実行時のアクセス許可:結果の配信に失敗しました。ResultInfo {who = @ android:requestPermissions :, request = 123、result = 0、data = null}アクティビティ
// Check if user granted the permission
int hasReadExternalStoragePermission = ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE);
if(hasReadExternalStoragePermission == PackageManager.PERMISSION_GRANTED) {
displaySongs();
} else {
// Should we show explanation?
if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_EXTERNAL_STORAGE)) {
// Show explanation to user
} else {
// No explanation needed. We can request permissions
String permissions[] = {
Manifest.permission.READ_EXTERNAL_STORAGE
};
ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSIONS_CODE);
}
}
である私はネクサス6P上で自分のアプリケーションをデバッグしていますコールバックメソッド
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_PERMISSIONS_CODE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
displaySongs();
} else {
// Permission Denied
Toast.makeText(MainActivity.this, "Permissions denied", Toast.LENGTH_SHORT)
.show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
- です。
- ターゲットとコンパイルされたSDKのバージョンは24です。
- 私は、アプリケーションを実行すると、許可のプロンプトが表示されません。それはちょうどクラッシュします。
これは私が私のAndroidのモニター
09-27 20:05:48.143 31106-31106/org.javacad.music E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.javacad.music, PID: 31106
java.lang.RuntimeException: Failure delivering result ResultInfo{[email protected]:requestPermissions:, request=123, result=0, data=null} to activity {org.javacad.music/org.javacad.music.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at android.app.ActivityThread.deliverResults(ActivityThread.java:3699)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at org.javacad.music.MainActivity.onRequestPermissionsResult(MainActivity.java:129)
at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:6582)
at android.app.Activity.dispatchActivityResult(Activity.java:6460)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
- で取得エラーメッセージである私は、このチェックボックスを「再び尋ねることはありません」をチェックしませんでした。
- 私は許可要求を拒否しませんでした。許可]ダイアログボックスが表示されないのはなぜ
私はすでに
<!--READ_EXTERNAL_PERMISSION to read files form storage--> <user-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
- AndoridManifest.xmlにマニフェスト要素の直接の子として許可を定義しましたか?
- なぜコールバックメソッドで空のパーミッションとgrantResults配列が得られますか?私の場合は
これは 'user-permission'ではなく' uses-permission'です。マニフェストの許可要素にタイプミスがあります。 –
私の悪い。それは動作します、ありがとう –