Android:外部存储权限问题:

时间:2011-08-29 00:17:04

标签: android permissions sd-card

我真的需要有人在这里指导外部存储或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"。它总是返回假。它应该返回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 个答案:

答案 0 :(得分:0)

根据documentation,您所描述的州意味着您无法访问外部媒体存储:

public static final String MEDIA_SHARED

在API级别1中添加了getExternalStorageState(),如果媒体未安装,则返回MEDIA_SHARED,并通过USB大容量存储共享。

常数值:“共享”

您需要转到USB Mass Storage选项并关闭USB存储设备。

PS:感谢DigCamara,我从这个SO answer复制了。

由于