2017-12-16 5 views
-1

SDカードからの読み込みを拒否されました。許可は私が仮想SDカードの準備ができているの通知を持って、私は内部と外部の両方のストレージを選択しようとしたマシュマロ</p> <p>と仮想ネクサス5に自分のアプリケーションをテスト

エミュレータにドラッグアンドドロップして、sdcard/Downloadにテキストファイルをアップロードしました。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>を私のマニフェストに追加しました。

私は、このようなこの

File sdcard = Environment.getExternalStorageDirectory(); 

File file = new File(sdcard,"Download/gradle.build"); 

try { 
     BufferedReader br = new BufferedReader(new FileReader(file)) 
...} 

としてファイルにコードを使用してSDカードを読み込むしようとすると、私は開いて失敗した... EACCESS取得 - スローされた許可拒否の例外を。

なぜ私はsdcardからファイルを読み取れませんか?ありがとう。

+1

であれば、最初のチェック:アプリマニフェスト**と**のパーミッションをリストアップする必要があります**アプリケーションが実行されている間に必要なそれぞれの危険なアクセス権を要求しなければなりません* https://developer.android.com/training/permissions/requesting.html –

答えて

1

Request permission at runtimeは、Androidのバージョン6.0で追加された機能です。アイデアは、アプリケーションがインストールされている場合、セキュリティリスクを知らずに許可を与えるだけです。実行時に危険なアクセス許可を与える必要がありますので、ユーザーが危険を知っていることを願っています。この場合、SDストレージを使用する必要があります(理由を挙げてください)。がんばろう。

2

マシュマロ以上のデバイスを対象としているため、実行時にパーミッションを与える必要があり、マニフェストで宣言されたパーミッションは意味を持ちません。したがって、以下のような許可を与えてから、関連するファイルにアクセスしてください。

デバイスは、Android 6.0以降を実行している、とあなたのアプリのターゲットSDKが23以上の場合、すでにここにこの

 // Assume this Activity is the current activity 
     int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, 
        Manifest.permission.WRITE_EXTERNAL_STORAGE); 
     if (permissionCheck==PackageManager.PERMISSION_GRANTED){ 
     //this means permission is granted and you can do read and write 
     }else{ 
     requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION); 
     } 

をチェックすることにより、与えられた権限は、*許可guide

関連する問題