androidのカメラから画像を保存する必要があります。マニフェストで外部ストレージへの書き込み許可を使用し、このコードを使用しています
File dir = new File(Environment.getExternalStorageDirectory(), "Test");
if (!dir.exists() || !dir.isDirectory())
dir.mkdirs();
String path = dir.getAbsolutePath();
Log.d(TAG, path); //log show the path
File file = new File(dir.getAbsolutePath() + "/Pic.jpg");
Log.d(TAG, file.getAbsolutePath()); //again path is shown here
outStream = new FileOutputStream(file);
outStream.write(bytes);
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + bytes.length); //fail here
} catch (FileNotFoundException e) {
Log.d(TAG, "not done"); //error is here (this exception is thrown)
} catch (IOException e) {
Log.d(TAG, "not");
} finally { }
また、mkdirs()の代わりにmkdir()を試しました。
コードで何が間違っていたのか考えていますか?
ありがとう
私のように経験がない人のために。私はこの問題と戦い、しばらくの間髪を失いました。私は(互換性のために)api 21をターゲットにしており、Lollipopで動作しましたが、Marshmallowではディレクトリを作成しませんでした。マニフェストに「使用」権限がありましたが、それでも機能しません。どうやらMarshmallowでAndroid studioでインストールすると、拒否したように静かに失敗する許可を与えるかどうかを尋ねることはありません。設定、アプリ、アプリを選択し、許可スイッチをオンにします。
IDIOT ME!私はマニフェストの許可を使用しましたが、電話にアプリをインストールしたとき、ストレージの許可を与えませんでした!...この質問に対する否定を理解しています...ご不便をおかけして申し訳ありません。
Android Mでテストしている場合は、おそらく[設定]> [アプリ]> [許可]をチェックして、ストレージへのアクセス許可が付与されているかどうかを確認する必要があります。
入れましたか
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
あなたのAndroidManifestで? Android M sdに書き込むためのユーザー許可を要求する必要があります。ここをご覧ください example
ファイルではなくディレクトリを作成しました。次のコードで新しいファイルを作成します
File file = new File(dir.getAbsolutePath() + "/Pic.jpg");
file.createNewFile()
これを試して。アプリケーションコードで完全に機能するMarshmallowの実行時許可を提供します。
private String getFilename(String strFileName) {
String filepath = Environment.getExternalStorageDirectory().getPath();
File fileBase = new File(filepath, "Test");
if (!fileBase.exists()) {
fileBase.mkdirs();
}
return (file.getAbsolutePath() + "/" + strFileName + file_exts[currentFormat]);
}
new File(getFilename(edt.getText().toString().trim()))