###前提・実現したいこと
SDカード(外部ストレージ)のフォルダ内にあるファイルに書き込みを行いたいのです。
###発生している問題・エラーメッセージ
ファイルに書き込みを行う処理で catch (FileNotFoundException e)でエラーを拾われて、
書き込みができません。
java
1 2try { 3 4String sLicenseStatusFile = /storage/SDカード名/自作フォルダ/test.txt 5 6 File fStatusFile = new File(sLicenseStatusFile); 7 fOutStream = new FileOutputStream(fStatusFile, false); 8 fOutStream.write(sLicenseStatus.getBytes()); 9 10} catch (FileNotFoundException e) { 11 ShowMsgDialog("書き込みができません" + sLicenseStatusFile); 12 13return false; 14}
###試したこと
Android6.0以降からpermissionがAndroidManifestだけではだめなものがあると
知ったので実際に、プログラムコードの中でストレージの読み書き権限の確認と
許可を得る作業を実装しました。
また、端末の「設定」→「アプリ」から該当するアプリを選択して権限を確認しました。
結果は、
「SDカードのコンテンツの変更または削除」
「SDカードコンテンツの読み取り」
が許可されていました。
###Runtime Permission部分
書き込みの処理の前に呼び出しています。
java
1private static final int REQUEST_EXTERNAL_STORAGE_CODE = 0x01; 2 private static String[] mPermissions = { 3 Manifest.permission.READ_EXTERNAL_STORAGE, 4 Manifest.permission.WRITE_EXTERNAL_STORAGE, 5 }; 6 7 private static void verifyStoragePermissions(Activity activity) { 8 int readPermission = ContextCompat.checkSelfPermission(activity, mPermissions[0]); 9 int writePermission = ContextCompat.checkSelfPermission(activity, mPermissions[1]); 10 11 if (writePermission != PackageManager.PERMISSION_GRANTED || 12 readPermission != PackageManager.PERMISSION_GRANTED) { 13 ActivityCompat.requestPermissions( 14 activity, 15 mPermissions, 16 REQUEST_EXTERNAL_STORAGE_CODE 17 ); 18 } 19 }
###補足
Android Studio2.3.3
SDKのAPIは25
OSのAndroidバージョンは7.1 です。
過去の同じような事例を参考に試してみましたが上手くいきません。
ファイルを書き込むためのルートパスも間違っていない上に、
権限が許可となっているのに書き込みができないとはどういうことでしょうか?
よろしくお願いいたします。
###追記
マルチポストのルールを知りませんでした。
急いでいたので複数質問してしまいました。
以後気をつけます。
回答2件
あなたの回答
tips
プレビュー