Android File.mkdirs()返回false
我正在创建一个社交媒体平台,可以将设备上已有的照片上传到该平台。我在github上找到了一个示例,理论上,它应该可以让我读取所有jpg/png文件并在recyclerview中显示它们。获取文件的代码如下所示Android File.mkdirs()返回false,android,file,Android,File,我正在创建一个社交媒体平台,可以将设备上已有的照片上传到该平台。我在github上找到了一个示例,理论上,它应该可以让我读取所有jpg/png文件并在recyclerview中显示它们。获取文件的代码如下所示 private void createImageGallery() { File storageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
private void createImageGallery() {
File storageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
mGalleryFolder = new File(storageDirectory, GALLERY_LOCATION);
Log.i("gallery", "" + (mGalleryFolder != null));
Log.i("gallery", mGalleryFolder.toString());
if (!mGalleryFolder.exists()) {
boolean mk = mGalleryFolder.mkdirs();
Log.i("gallery", "mkdirs returns " + mk);
}
}
第一条log语句等于true,第二条显示字符串
“/storage/simulated/0/Pictures/hilarity\u image”
第三个log语句表示布尔值mk为false。然后将文件对象mGalleryFolder传递到recyclerview适配器的构造函数中。调用adapter.getItemCount()时引发错误。代码如下所示
public int getItemCount() {
return mGalleryFolder.listFiles().length;
}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
清单中的一些权限如下所示
public int getItemCount() {
return mGalleryFolder.listFiles().length;
}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
显然,正在对空对象调用.length()。我认为这与mkdirs()返回false有关。这个假设正确吗?如何使mkdirs()返回真值?请记住,理想的结果是在recyclerview中显示设备上已有的所有照片,如果我解决此问题的方法不正确,请更正。未创建目录。因此,您不应该继续使用代码,而应该停止 现在您尝试列出不存在的目录中的文件。难怪listFiles会返回null 对于Android 6+,您需要添加代码,要求用户确认您在清单中请求的权限 谷歌的运行时权限
添加代码后,您可以创建该目录。是否请求写入权限?谢谢你,从现在起我一定要记住这一点。