2

しばらく前に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 を設定してコードを実行するにはどうすればよいですか?

4

1 に答える 1

1

マニフェストにパーミッションを追加する必要がありWRITE_EXTERNAL_STORAGEます - これは API レベル 4 以降の新しいものです。

于 2010-09-27T09:44:37.837 に答える