Перейти к содержанию
Fire Monkey от А до Я
  • 0

Добавление изображения в системную галерею изображений


Brovin Yaroslav

Вопрос

  • Администраторы

Чтобы добавить любое изображение в системную галерею изображений Андроида нужно:

  1. Получить универсальный URI к вашей картинке GetImageUri. Для этого сохраняем изображение (если изображение находится в памяти устройства, а не в файловой системе) в кэш приложения.
  2. Формируем намерение JIntent, что хотим добавить изображение. Задаем URI к картинке и делаем широковещательный запрос на все приложения, которые могут обработать наш запрос.
// Сохранение изображения в кэш приложения и извлечение Url к этому файлу
function GetImageUri(ABitmap: TBitmap): Jnet_Uri;
var
  ImageFile: JFile;
  ImageUri: Jnet_Uri;
  FileNameTemp: JString;
  FileNameExt: JString;
begin
  FileNameTemp := StringToJString('temp');
  FileNameExt := StringToJString('.jpg');
  try
    ImageFile := TJFile.JavaClass.createTempFile(FileNameTemp, FileNameExt);
    ImageUri := TJnet_Uri.JavaClass.fromFile(ImageFile);
    ABitmap.SaveToFile(JStringToString(ImageFile.getAbsolutePath));
  finally
    Result := ImageUri;
  end;
end;

procedure AddPhotoToGallery(const APhoto: TBitmap);
var
  Intent: JIntent;
begin
  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_MEDIA_SCANNER_SCAN_FILE);
  Intent.setData(GetImageUri(APhoto));
  SharedActivity.sendBroadcast(Intent);
end;
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Спасибо за примеры. Но не могли бы Вы добавлять в них USES.

Delphi Berlin, например, никак не хочет показать мне, что прописать в USES для JFile.

Ctrl+Shift+A выдает ошибку: System.NullReferenceException: Object reference not set to an instance of an object, которую разработчики уже лет 7-10 не могут исправить.

Справка молчит.

И wiki тоже http://docwiki.embarcadero.com/CodeExamples/Berlin/e/index.php?title=Special%3ASearch&search=jfile&go=Go

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...