出于兼容性原因,我有一个针对 SDK 1.5 编译的应用程序,我想尝试保持这种方式。我允许用户将图像保存到外部存储器,当时我确信它始终是 SD 卡。即使用户卸载应用程序,我也希望图像(文件)保留,否则我可以保存到内部存储器并且应用程序会在卸载时删除。
到目前为止,我从我的测试设备加载图像都没有问题,但现在我得到了一个东芝 Thrive 平板电脑,除了内部 DDR 内存,还有 8GB 内部闪存和一个 SD 卡插槽。我的应用程序将图像很好地保存在东芝声明的存储位置,如下所示:
// 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"
即便如此,我认为那只是为了允许写作。