私は以下のコードを使用しています。しかし、写真を追加ボタンをクリックすると何も起こりません。 printlnの私は4番と5番を参照してください。私は間違ったことをしています。私はフラグメント内のコードを使用しています。どんな助けも素晴らしいだろう。Android API 23 Read_external_storage許可の問題
int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE;
// define in class
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
System.out.println("number 2");
// We have access. Life is good.
} else if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)) {
System.out.println("number 3");
// We've been denied once before. Explain why we need the permission, then ask again.
} else {
System.out.println("number 4");
// We've never asked. Just do it.
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
System.out.println("number 5");
}
コールバックの部分は以下の通りです:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// We got the permission
System.out.println("number 6");
} else {
System.out.println("number 7");
// We were not granted permission this time, so don't try to show the contact picker
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
編集:私は以下のように自分のコードをedite
、今私が見るのprintlnログ内の数4、5、7、8 。エラーはありませんが、何も起こりません。ユーザーに許可を求めるダイアログボックスを開いてはいけませんか?私は、エミュレータとしてapi 19でnexus 6を使用します。
private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 7;
// define in class
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
System.out.println("number 2");
// We have access. Life is good.
} else if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)) {
System.out.println("number 3");
// We've been denied once before. Explain why we need the permission, then ask again.
} else {
System.out.println("number 4");
// We've never asked. Just do it.
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
System.out.println("number 5");
}
コールバックの部分は以下の通りです:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// We got the permission
System.out.println("number 6");
} else {
System.out.println("number 7");
// We were not granted permission this time, so don't try to show the contact picker
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
System.out.println("number 8");
}
}
編集2:私はマニフェストに許可を追加しませんでした
、私は<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
を追加し、今では大丈夫そうです。
こんにちはMohammadさん、MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGEの値はどのように設定するのですか?途中でありがとうございました。 – saner
任意のintです。この変数は異なるアクセス権を区別するために使用されるので、どの要求から応答を得るかを知るために、各要求に異なるアクセス権を与える必要があります。 –
あなたはこれが便利かもしれません:http://developer.android.com/training/permissions/requesting.html –