私はソーシャルメディアプラットフォームを作成しています。このプラットフォームでは、既にデバイス上にある写真をプラットフォームにアップロードできます。 githubのサンプルは、(理論的に)私がjpg/pngファイルをすべて読んで、recyclerviewでそれらを表示できるようにすべきであることを発見しました。ファイルを取得するコードを以下に示します。File.mkdirs()がfalseを返す
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);
}
}
最初のログ文がtrueに相当、第二は、文字列
"/storage/emulated/0/Pictures/hilarity_image"
を示した第三のログステートメントは、ブールMKが偽であると言います。 Fileオブジェクト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" />
、.LENGTH()の下に示されています。私はこれがmkdirs()がfalseを返すことと関係があると仮定しました。この仮定は正しいですか?どうすればmkdirs()がtrueを返すようにするのですか?この問題に対する私のアプローチが間違っている場合は、私が修正してください、リサイクルビューで既にデバイス上にあるすべての写真が表示されます。
書き込み権限がありますか? https://developer.android.com/training/permissions/requesting.html – diegoveloper