File.listFiles returns null 在不应该的时候
File.listFiles returns null when it shouldn't
我正在尝试获取存在于 Phone 图片文件夹(内部存储,未插入 SDCard)中的文件列表:
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File[] files = file.listFiles();
但文件值始终为空。
我还将此添加到 AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
任何想法将不胜感激,提前致谢。
它 returns null 因为 Environment.getExternalStoragePublicDirectory
will/is 应该处理来自 SD 卡等外部存储的文件..因为你说没有插入 SD 卡
如果您的目标是 Android SDK >=23,您需要在 run-time 获得许可。
https://developer.android.com/training/permissions/requesting.html
正如 Abhishek Aryan 所建议的,我正在使用 Android SDK >=23 所以我必须使用代码获得权限:
boolean grantedAll = ContextCompat.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
if (!grantedAll)
{
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_PERMISSIONS);
}
我正在尝试获取存在于 Phone 图片文件夹(内部存储,未插入 SDCard)中的文件列表:
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File[] files = file.listFiles();
但文件值始终为空。 我还将此添加到 AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
任何想法将不胜感激,提前致谢。
它 returns null 因为 Environment.getExternalStoragePublicDirectory
will/is 应该处理来自 SD 卡等外部存储的文件..因为你说没有插入 SD 卡
如果您的目标是 Android SDK >=23,您需要在 run-time 获得许可。
https://developer.android.com/training/permissions/requesting.html
正如 Abhishek Aryan 所建议的,我正在使用 Android SDK >=23 所以我必须使用代码获得权限:
boolean grantedAll = ContextCompat.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
if (!grantedAll)
{
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_PERMISSIONS);
}