Есть ли способ обойти ограничение размера для "Загрузить на фотографии"
Я использую этот код, чтобы поделиться коллекцией изображений:
final ArrayList<Uri> imageUris = new ArrayList<>();
for (final ImageBean selectedImage : ImageBean.getSelectedImageBeans(imagesBeans)) {
final File imageFile = new File(selectedImage.getPathToImage().getPath());
final Uri contentProviderUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", imageFile);
imageUris.add(contentProviderUri);
}
final Intent shareIntent = new Intent();
shareIntent.setType("image/*");
if (imageUris.size() == 1) {
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageUris.get(0));
} else {
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
}
context.startActivity(Intent.createChooser(shareIntent, context.getResources().getText(R.string.share_images_intent)));
В основном меня интересует загрузка в Google Фото. Это прекрасно работает для изображения размером 600 КБ, но не работает для изображения размером 5 МБ (24MP от моей камеры). Итак, очевидно, что есть ограничение по размеру, но поскольку ошибка возникает в активности Google Фото, я не могу ее отладить (или я недостаточно знаю Android Studio о том, как это сделать).
Есть ли способ, которым я могу изменить свое намерение, чтобы я мог загрузить несколько 24-мегапиксельных изображений, или размер задан, и мне нужно обойти это (например, путем реализации API Google Photos)?
1 ответ
Оказывается, Google Photos не очень хорошо играют с FileProvider. Загрузка работает при использовании открытого URI контента, который можно найти с помощью чего-то вроде
int mediaId = cursor.getInt(getColumnIndexForMediaID());
Uri publicUri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(mediaId));
Теперь я вернулся на Не могу редактировать изображение в Google Фото после действия "Загрузить в Фото"