我真的需要有人在这里指导我关于外部存储或sd卡的一些问题。我不会进入复杂的。我有一个文件夹与名称为MyVideos
。它位于Motrola Xoom的sd卡文件夹;路径是"/mnt/sdcard-ext/MyVideos.
文件夹已经存在。但是,我遇到了一些奇怪的错误。例如,如果我使用以下代码检查文件夹是否存在:
File myDirectory = new File(defaultStorage, "/MyVideos/");
if (myDirectory.exists())
{
my code: lets say true
}
else
{
my code: false
}
其中defaultStorage is = "/mnt/sdcard-ext"
。它总是返回false。它应该返回true,因为文件夹肯定存在于那里。假设文件夹存在于那里,我执行其他操作,如
for (File f : myDirectory.listFiles())
{
if (f.isFile())
{
filenames.add(f.getName()); //add to array
}//if closes
}//for closes
我在下面的行中得到FATAL异常
for (File f : myDirectory.listFiles())
错误堆栈如下所示:
E/AndroidRuntime(22644): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity
E/AndroidRuntime(22644): Caused by: java.lang.NullPointerException
我刚刚提到了堆栈中重要的东西。准确地说,它是一个NullPointerException。尽管我使用
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在我的清单文件中。即使这样它也不工作。最令人惊讶的是它在这里运行得很好;但是有一个客户在美国,它是崩溃的所有设备。有什么不同的设备在英国或美国的权限设置。我将感谢你,如果你在这里帮助我。这是一个大问题,我。谢谢
1条答案
按热度按时间1cklez4t1#
根据文档,您所描述的状态意味着您无法访问外部媒体存储:
公共静态最终字符串MEDIA_SHARED
在API级别1中添加getExternalStorageState(),如果存在未装载的介质,则返回MEDIA_SHARED,并通过USB大容量存储器共享。
常数值:"共享"
您需要转到USB大容量存储选项并关闭USB存储。
PS:多亏了DigCamara,我从这个SO answer中复制了。
谢啦,谢啦