доступ к изображениям телефона через контент-провайдера в Android - PullRequest
2 голосов
/ 23 мая 2010

Мне нужен пример кода или учебное пособие для доступа к изображениям телефона / мультимедиа через контент-провайдера?

Я знаю следующее, что дальше?

ContentResolver cr = mContext.getContentResolver();
Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);

Ответы [ 2 ]

3 голосов
/ 26 октября 2016

Использование CursorLoader:

(путем реализации LoaderManager.LoaderCallbacks<Cursor> в вашем AppCompatActivity)

private void loadPhotosFromPhone() {
    getSupportLoaderManager().initLoader(0, null, this);
}

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    String[] projection = {MediaStore.Images.Media.DATA};
    return new CursorLoader(this, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

    ArrayList<String> alstPhotos = new ArrayList<>();

    for (data.moveToLast(); !data.isBeforeFirst(); data.moveToPrevious()){
        String photoPath = data.getString(0);
        alstPhotos.add(photoPath);
    }

    // Use alstPhotos
}

При этом все изображения на устройстве будут загружаться асинхронно.

1 голос
/ 26 октября 2016

Я создал вспомогательный класс, который будет собирать все пути к изображениям с устройства пользователя.Вы можете использовать его, если хотите.Для вашей информации загрузка изображений может быть медленной, поэтому будет хорошо, если вы загрузите их через фоновый поток или загрузчик.

...