我现在对Android非常沮丧。
我正在尝试访问Environment.DIRECTORY_MOVIES
:
从调试信息中可以看出,它是一个目录,路径为/storage/emulated/0/Movies
。但它不包含任何文件。
如果我使用adb shell列出目录中的文件,我会得到以下结果:
很明显,该目录中的是文件。我认为这可能是一个权限问题,所以我将这些添加到我的清单中:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
但结果仍然相同。我做错了什么?
答案 0 :(得分:1)
错过Android 6.0运行时权限的确切影响各不相同。通常情况下,您会收到SecurityException
,这样可以更清楚地了解正在发生的事情,因为异常消息会告诉您缺少的内容。
在这种情况下,显然Java文件I / O内容会占用SecurityException
,或者不会引发这样的异常,这就是为什么你从listFiles()
得到奇数值的原因。
您的选择要么退回targetSdkVersion 23
以下,要么实施用户权限请求逻辑(例如ActivityCompat.requestPermissions()
)。