Невозможно загрузить изображение в просмотр изображений из GoogleStorageURI (URI образа Google Диска) с помощью Gallery Intent - PullRequest
0 голосов
/ 29 марта 2019

Я загрузил изображение из хранилища Google Drive Я хочу установить это изображение для просмотра изображений в моем приложении с помощью Gallery Intent.

Uri изображения, полученного в onActivityResult: content: //com.google.android.apps.docs.storage/document/acc%3D2%3Bdoc%3Dencoded%3DWe%2BdXDcNgTeulVk1Ntu3YfRYkm9wk7uTdTG6xAg4x3g4x3g4x4g4

Я использую этот код, чтобы получить реальный путь от URL:

 if ("com.google.android.apps.docs.storage".equals(uri
                    .getAuthority())) {

    //content://com.google.android.apps.docs.storage/document/acc%3D2%3Bdoc%3Dencoded%3DWe%2BdXDcNbYeulVk1Ntu3YfRYkm9wk7uTdTG6LE6yck1BxY4g7xAxyPAgtMtz4A%3D%3D

 final String docId = DocumentsContract.getDocumentId(uri);
                    final String id = docId.split(";")[1];
                    final String[] selectionArgs = new String[]{id};
                    //String[] column = {MediaStore.Images.Media.DATA};


                    // where id is equal to
                    String selection = MediaStore.Images.Media._ID + "=?";
                    Uri contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

                    //..
                    Cursor cursor = null;
                    String filePath = null;
                    try {
                        String[] column = {MediaStore.Images.Media.DATA};

                        cursor = context.getContentResolver().query(contentUri,
                                column, selection, selectionArgs, null);
                        if (cursor != null && cursor.moveToFirst()) {
                            int columnIndex = cursor.getColumnIndex(column[0]);
                            filePath = cursor.getString(columnIndex);
                        }
                    } finally {
                        if (cursor != null)
                            cursor.close();

                        return filePath;


 }
            }

.....

Но я получаю нулевой курсор. Таким образом, filepath всегда пуст / null.

Кто-нибудь может подсказать, что я делаю не так?

1 Ответ

0 голосов
/ 29 марта 2019

Я использую этот код, чтобы получить реальный путь от URL

Удалить.

Кто-нибудь, не могли бы вы подсказать, что я делаю не так?

Вы используете этот код.

Передайте Uri своей любимой библиотеке загрузки изображений (Glide, Picasso и т. Д.). Он сделает всю работу за вас, заполнив ваш ImageView всего несколькими строками кода.

Или, если вы настаиваете на том, чтобы сделать это самостоятельно:

  • Используйте ContentResolver и openInputStream(), чтобы получить InputStream для контента, обозначенного Uri
  • Используйте BitmapFactory.decodeStream(), чтобы получить Bitmap на основе этого InputStream
  • Выполните эти два шага в фоновом потоке, поскольку вы не должны выполнять дисковый ввод-вывод и декодирование изображения в главном потоке приложения
  • В основной ветке приложения введите Bitmap в ImageView,
...