无法列出或打开Android Documents目录中的文件

时间:2016-05-29 05:40:41

标签: android

所以我在手机上使用Excel创建了一个名为theBook.csv的文件,该文件已保存到手机的Documents文件夹中。当我尝试列出手机Documents文件夹的内容时,我收到NullPointerException,说我尝试了to get length of null array

以下是我的尝试:

String path = Environment.getExternalStorageDirectory().toString() + "/Documents";
// I have also tried:
// String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
// and
// String path = Environment.getRootDirectory().getAbsolutePath() + "/Documents";
Log.i("Files", "The path is: " + path);
File f = new File(path);
File file[] = f.listFiles();
try {
    Log.i("Files", "Number of files: "+ file.length);
    for (int i = 0; i < file.length; i++) {
        Log.i("Files", "Found file with name:" + file[i].getName());
    }
} catch (NullPointerException e) {
    entoast("NPE"); // my toast message method
    e.printStackTrace();
}

当我查看日志时,path的值为/storage/emulated/0/Documents(无论我尝试的三行中的哪一行),我都不确定它是否与Documents相对应theBook.csv所在的文件夹。如果是,为什么theBook.csv不会显示在日志文件中?如果没有,我如何让我的程序访问手机的实际Documents文件夹,而不仅仅是一个空目录?

通过USB连接手机进行文件传输时,可以查看“文档”文件夹,使用手机内置的文件浏览器时也可以查看。我在手机上运行Android 6.0,虽然该应用程序的最低要求SDK是Android 4.1。我的清单文件中也有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />行。

1 个答案:

答案 0 :(得分:0)

READ_EXTERNAL_STORAGE属于危险类别权限,您应该请求权限运行时间。 Android 6.0中添加了此功能。

检查是否授予许可

// Assume thisActivity is the current activity
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
        Manifest.permission.READ_EXTERNAL_STORAGE);

如果应用程序具有权限,则该方法返回PackageManager.PERMISSION_GRANTED,应用程序可继续执行该操作。其他请求权限运行时间。

有关详细信息,请访问android官方文档

Requesting Permissions at Run Time

有关危险许可的完整列表https://developer.android.com/guide/topics/security/permissions.html