みんな。Androidで画像をSDカードの公開画像ディレクトリに保存しようとしています。しかし、書き込み用のファイルを開くことまではうまくいかないようです。コードは次のとおりです。
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageWriteable = true;
}
if(mExternalStorageWriteable){
File root_dir = Environment.getExternalStorageDirectory();
root_dir.mkdirs();
File pictures_directory = new File(root_dir, "/Pictures/");
pictures_directory.mkdirs();
File outputfile = new File(pictures_directory, "test_file.jpg");
try {
outputfile.createNewFile();
FileOutputStream out = new FileOutputStream(outputfile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
私のデバッガーは常にcatchブロックにジャンプし(createNewFile呼び出しによって引き起こされます)、IOExceptionsメッセージは「ディレクトリではありません」です。createNewFile呼び出しを削除すると、FileOutPutStreamコンストラクターはFileNotFound例外をスローします。ただし、ファイルシステムのルートまたはpicturesディレクトリへのfileoutputストリームを開くと、正常に機能するようです。
明らかなことを省くために、私のマニフェストには<uses-permission android:name ="android.permission.WRITE_EXTERNAL_STORAGE"/>タグが含まれています。APIレベル5を使用していて、エミュレーターに仮想SDカードがマウントされています。どんな提案でも大歓迎です。
解決済み:エミュレータファイルシステムに問題がありました。DDMSは、何らかの理由で/Pictures/がファイルまたはディレクトリとして作成されていることを示しました。新しいエミュレータを作成すると、問題が解決しました。