2

Я использую код ниже, чтобы получить все изображения из папки Camera внутри DCIM и отобразить в моем приложении. Но я хочу отображать все изображения на устройстве в своем приложении, независимо от того, где они хранятся на устройстве. Как я могу это сделать?Отображение всех изображений с устройства в моем приложении

String ExternalStorageDirectoryPath = Environment 
       .getExternalStorageDirectory() 
       .getAbsolutePath(); 
     String targetPath = ExternalStorageDirectoryPath + "/DCIM/Camera"; 
     images=new ArrayList<String>(); 
     File targetDirector = new File(targetPath); 

     File[] files = targetDirector.listFiles(); 
     for (File file : files) { 

      images.add(file.getAbsolutePath()); 
     } 
     gallerylist=new CameraGalleryAdapter(getActivity().getApplicationContext(),R.layout.giphy_grid,images); 
     gridview.setAdapter(gallerylist); 
+0

https://github.com/amirarcane/recent-images –

ответ

7

Прежде всего, вы должны проверить, если SD карта доступна:

Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 

Если SD-карта присутствует, то используйте:

final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID }; 
final String orderBy = MediaStore.Images.Media._ID; 
//Stores all the images from the gallery in Cursor 
Cursor cursor = getContentResolver().query(
     MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, 
     null, orderBy); 
//Total number of images 
int count = cursor.getCount(); 

//Create an array to store path to all the images 
String[] arrPath = new String[count]; 

for (int i = 0; i < count; i++) { 
    cursor.moveToPosition(i); 
    int dataColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); 
    //Store the path of the image 
    arrPath[i]= cursor.getString(dataColumnIndex); 
    Log.i("PATH", arrPath[i]); 
} 
// The cursor should be freed up after use with close() 
cursor.close(); 

Приведенный выше код будет список всех изображений с SD-карты, для получения изображений из внутренней памяти просто замените

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

с

MediaStore.Images.Media.INTERNAL_CONTENT_URI 

Используя тот же фрагмент кода.

+0

Какова наилучшая практика получения всех «фото» изображений? В настоящее время я перечисляю файлы непосредственно из папки DCIM, а затем получаю пути, но мне интересно, есть ли у них наилучшая практика. – HendraWD

+0

@HendraWijayaDjiono Нет «общей лучшей практики». Если вы заметили способ получения изображений, более не работает последовательно на устройствах Marshmallow. Пожалуйста, напишите отдельный вопрос или, возможно, кто-то уже есть. И затем дайте мне знать, я поставлю в нее 2 цента. –

+0

не работает в версии 5.0. любезно просмотрите его снова, ему нужна помощь :) –

 Смежные вопросы

  • Нет связанных вопросов^_^