私はアンドロイドのカメラから画像を保存する必要があります。 iは、マニフェスト内の書き込み外部記憶許可を使用し、私の代わりにmkdirsのiもMKDIRを試みアンドロイドmkdirsが動作しない
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 { }
このコード()()と同じ結果を使用しています。
コード内で何が問題になったのでしょうか?
ありがとう
おそらく[実行時の権限は実装されていません](https://stackoverflow.com/questions/32635704/android-permission-それでも私が持っていることはありません)。それを超えて、**それを記録せずに例外を捕まえることはありません**。 Log.d() 'コールに' e'を3番目のパラメータとして追加し、LogCatを使ってクラッシュに関連するJavaスタックトレースを調べます。 – CommonsWare
スタックトレースを表示できますか? – ToYonos
'if(!dir.exists()||!dir.isDirectory()) dir.mkdirs();'。悪いコードの良い例。最初にディレクトリではない場合、mkdirsはそのファイルをディレクトリに変換しません。次に、mkdirsの戻り値が失敗する可能性があるので、それをチェックする必要があります。途中でやったの – greenapps