互換性の理由からSDK1.5に対してコンパイルするアプリがありますが、それを維持したいと思います。ユーザーが画像を外部メモリに保存できるようにしています。外部メモリは、当時は常にSDカードであると確信していました。ユーザーがアプリをアンインストールしても画像(ファイル)を残したいのですが、そうでない場合は内部メモリに保存でき、アンインストール時にアプリが削除されてしまいます。
これまで、テストデバイスからの画像の読み込みに問題はありませんでしたが、内部DDR RAMに加えて、8GBの内部フラッシュメモリとSDカードスロットを備えたToshibaThriveタブレットを入手しました。私のアプリは、次のように保存場所を宣言して東芝に画像を正常に保存します。
// Note: First I create a folder for my App - Not shown here, but it works fine
file = new File(Environment.getExternalStorageDirectory()+ File.separator + "MyApp" + File.separator + "test.png);
東芝のタブレットでは、内部フラッシュデバイスに上記の方法で常に保存されますが、同じ宣言を使用しても同じファイルは読み込まれません。これは非常に奇妙なことです。
この非常に単純な方法を使用してロードします。
file = new File(Environment.getExternalStorageDirectory()
+ File.separator + "MyApp" + File.separator + "test.png);
bitmap = BitmapFactory.decodeFile(file);
そして、ビットマップを表示します
以前はファイルのパーミッションを設定する必要はありませんでしたが、SDK 1.6以降に対してコンパイルする場合は、マニフェストでこれが必要です。
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
それでも、それは書くことだけを許すためだと思いました。