2016-05-10 17 views
0

私は以下のコードを使用しています。しかし、写真を追加ボタンをクリックすると何も起こりません。 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" />を追加し、今では大丈夫そうです。

答えて

0

MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGEは、複数の権限をチェックして有効な比較結果を返すためには、値がtoのstatic intである必要があります。

+0

こんにちはMohammadさん、MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGEの値はどのように設定するのですか?途中でありがとうございました。 – saner

+1

任意のintです。この変数は異なるアクセス権を区別するために使用されるので、どの要求から応答を得るかを知るために、各要求に異なるアクセス権を与える必要があります。 –

+0

あなたはこれが便利かもしれません:http://developer.android.com/training/permissions/requesting.html –

関連する問題