Получение разных типов URI при обмене изображениями в приложении - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть приложение, которым я делюсь изображениями из галереи. Когда я делюсь одним изображением, я получил этот код:

    imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
            if (imageUri != null) {
                filePath = null;
                if (imageUri != null && "content".equals(imageUri.getScheme())) {
                    Cursor cursor = this.getContentResolver().query(imageUri, new String[]{android.provider.MediaStore.Images.ImageColumns.DATA}, null, null, null);
                    cursor.moveToFirst();
                    filePath = cursor.getString(0);
                    cursor.close();
                } else {
                    filePath = imageUri.getPath();
                }
}

чтобы преобразовать их из чего-то типа "external / images / media / 3000" в фактический путь к файлу.

При совместном использовании нескольких изображений в приложении вместо одного URI Intent.EXTRA_STREAM представляет собой массив URI, поэтому для их разделения я беру весь массив в виде одной строки, разделяя его на массив String различных URI, а затем для каждой ячейки я делаю URI.parse() и пытаюсь повторить процесс, выполненный для одного URI. Это не работает, и когда я попытался выяснить, почему я обнаружил, что тип единственного URI (через imageUri.getClass().getName()) равен android.net.uri$HierarchicalUri, а несколько строк, которые я анализирую как URI, равны android.net.uri$StringUri.

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

...