しばらく前にSDカードに画像を保存するコードを書きました。targetSDKVersion をマニフェストに追加したところ、ファイル保存コードが機能しなくなりました。
アプリのマニフェストからtargetSdkVersionを削除しても、SDカードに何も書き込まれません。
Android 1.5 と 1.6 の間に、SD カードへの書き込みを妨げる API の変更はありますか?
File imageDirectory = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath()
+ File.separator
+ FOLDER_NAME);
Log.d(ImageSaver.class.getSimpleName(), "SD Card status: "
+ Environment.getExternalStorageState());
if (!imageDirectory.exists()) {
boolean created = imageDirectory.mkdir();
Log.d(ImageSaver.class.getSimpleName(), "Created image directory "
+ imageDirectory + " " + created);
}
File imageFile = new File(imageDirectory.getAbsolutePath() + File.separator
+ name + nameSuffix + FILE_ENDING);
bitmap.compress(Bitmap.CompressFormat.PNG, FULL_QUALITY,
new FileOutputStream(imageFile));
ビットマップをSDカードに圧縮するテストコードです。次のマニフェスト エントリでは機能しません。
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="8" />
次の例外が発生します。
09-27 11:35:58.689: エラー/ImageSaver(8672): ファイルが見つかりません
targetSdkVersion を削除すると、すべてのプラットフォームで再び機能するようになります。
targetSdkVersion を設定してコードを実行するにはどうすればよいですか?