Android:外部存储权限问题:

问题描述 投票:0回答:1

我真的需要有人指导我解决有关外部存储或 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

我在以下行遇到致命异常

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

在我的清单文件中。即使这样也行不通。最令人惊讶的元素是它在这里运行良好;但是美国有一个客户,他的所有设备都崩溃了。英国或美国设备的权限设置有什么不同吗。如果您在这里帮助我,我将非常感谢您。这是一个对我来说是个大问题。 谢谢

android permissions sd-card
1个回答
0
投票

根据文档,您所描述的状态意味着您无法访问外部媒体存储:

公共静态最终字符串MEDIA_SHARED

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

恒定值:“共享”

您需要转到 USB 大容量存储选项并关闭 USB 存储。

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

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.