2017-01-12 13 views
2

Я хочу получить изображения в телефонной галерее и показать на экране сетки. Я использую Cursor:Как получить изображения в галерее на Android-телефоне?

final String[] columns = {MediaStore.Images.Media.DATA, 
      MediaStore.Images.Media._ID}; 
final String orderBy = MediaStore.Images.Media.DATE_TAKEN + " DESC"; 
Cursor imagecursor = getContentResolver().query(
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, 
      null, orderBy); 

Мой телефон не имеет SD-карту, я получил Unfortunately app has stopped ошибку. Когда я заменил EXTERNAL_CONTENT_URI на INTERNAL_CONTENT_URI, ничего не произошло, никаких изображений не было.

+1

Если ваше приложение врезаться Вы должны показать здесь находится stacktrace. 'no images shows', какую часть кода вы ожидаете отображать? –

+0

Я отлаживал свой телефон, и он сказал, что разрешение отклонено, хотя я уже добавил android.permission.READ_EXTERNAL_STORAGE в манифесте. Итак, я google и выяснил, что проблема заключается в целевом sdk. Я поставил его на 22 вместо 24. И теперь все в порядке. Спасибо за ваш комментарий. – Jacky

ответ

2

вы можете получить изображения, инициируя это намерение:

Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT);// 
    startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_FILE); 

затем обрабатывать его в onActivityResult()

 @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (resultCode == Activity.RESULT_OK) { 
      if (requestCode == SELECT_FILE) 
       onSelectFromGalleryResult(data); 
} 
} 

private void onSelectFromGalleryResult(Intent data) { 

    if (data != null) { 
     try { 
      bm = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

дайте мне знать, если это поможет вам

+0

Все работает сейчас, см. Мой комментарий выше. Спасибо, и жаль, что не торопитесь. – Jacky

+0

Да, на sdk 24, вам нужно добавить разрешения на выполнение во время использования, посмотрите здесь: https://developer.android.com/training/permissions/requesting.html , пожалуйста, примите к сведению его полезность для тебя – Farhan

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

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