无法从具有多个外部内存区域的设备加载文件



出于兼容性原因,我有一个针对SDK 1.5编译的应用程序,我想尝试保持这种方式。我允许用户将图像保存到外部存储器,当时我确信它总是SD卡。即使用户卸载了应用程序,我也希望图像(文件)保持不变,否则我可能会保存到内部内存中,应用程序会在卸载时删除。

到目前为止,我从未遇到过从测试设备加载图像的问题,但现在我得到了一台东芝Thrive平板电脑,除了内部DDR内存外,还有8GB内部闪存和SD卡插槽。我的应用程序将图像保存在Toshiba上,声明存储位置如下:

// 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" 

即便如此,我还是认为这只是为了允许写作。

对不起,我不得不改变我的代码处理旋转,因为方向的值与我过去的方式不同,与我的其他设备不同,而且平板电脑通过USB连接到PC,PC锁定了对文件夹的访问-duh:(

最新更新