编辑:这是用户错误(抱歉)。我已经在下面回答了。
我正在开发一个需要访问 sd 卡上数据的应用程序。当我在我的开发设备(Android 2.1 的 odroid)上运行时,我具有 root 访问权限并且可以使用以下命令构建路径:
File sdcard = Environment.getExternalStorageDirectory();
String path = sdcard.getAbsolutePath() + File.separator + "mydata"
File data = new File(path);
File[] files = data.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.toLowerCase().endsWith(".xyz");
}});
但是,当我在没有 root 访问权限的手机(2.1)上安装它时,我得到 files == null。我认为这是因为我没有从 sd 卡读取数据的正确权限。当我试图在 /sdcard 上列出文件时,我也会得到 files == null。因此,如果没有我构建的路径,同样适用。
此外,此应用程序不打算通过应用程序商店分发,并且需要使用单独复制到 sd 卡的数据,因此这是一个真实的用例。放入 res/raw 的数据太多(我试过了,没用)。
我也尝试过添加:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
到清单,即使我只想读取 sd 卡,但它没有帮助。我还没有找到读取存储的权限类型。
可能有一个正确的方法可以做到这一点,但我一直无法找到它。任何提示都会很有用。