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

[Android] Открытие файла, стандартной программой


BurcevD

Вопрос

Добрый день, ситуация такая: есть БД, в которой хранятся различные файлы, с расширением. Требуется открыть файлы в соответствующей программе (т.е. изображения в галлереи, PDF - соответствующей программой и т.д.). файлы качаются нормально, но не выполняются, что может быть?

Помогите плиз, 

procedure ExecuteFile(aFileName: String);
var
  ExtFile   : string;
  {$IFDEF ANDROID}
  mime      : JMimeTypeMap;
  ExtToMime : JString;
  Intent    : JIntent;
  {$ENDIF}
  {$IFDEF IOS}
  URL       : NSURL;
  {$ENDIF}
begin
  ExtFile := LowerCase(Copy(ExtractFileExt(aFileName), 2, Length(aFileName)));
  {$IFDEF ANDROID}
  mime := TJMimeTypeMap.JavaClass.getSingleton();
  ExtToMime := mime.getMimeTypeFromExtension(StringToJString(ExtFile));
  if ExtToMime <> nil then
  begin
    Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
    Intent.setDataAndType(StrToJURI('file:' + aFileName), ExtToMime);
    try
      SharedActivity.startActivity(Intent);
    except
      ShowError('Невозможно отобразить файл');
    end;
  end;
  {$ELSEIF MSWINDOWS}
      ShellExecute(Application.Handle, 'open', PWideChar(aFileName), nil, nil, 0);
  {$ELSE}
  url := TNSURL.Wrap(TNSURL.OCClass.URLWithString(StrToNSStr(aFileName)));

  if SharedApplication.canOpenURL(Url) then
    SharedApplication.openURL(url)
  else
    ShowError('Невозможно отобразить файл');
  {$ENDIF}
end;
Ссылка на комментарий

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

  • 0

Сделал такую функцию

 

function TempPath : String;
begin
  {$IFDEF IOS}
  Result := TPath.GetLibraryPath+TPath.DirectorySeparatorChar;
  {$ELSE}
  Result := TPath.GetPublicPath+TPath.DirectorySeparatorChar;
  {$ENDIF}
end;

ну и соответственно прибавляю имя файла + расширение, т.е TempPath+<SomeName>+'.'+<Ext>

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

BurcevD, да вроде как все в вашем примере работает. По крайне мере проверил для 'txt' и  'jpg', сохранив рабочий файл в:

 

    // Path file
    aFileName := TPath.Combine(TPath.GetSharedDownloadsPath, 'sample-temp.jpg');
Ссылка на комментарий

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...