Открытие любого файла в подходящем приложении в операционной системе Андроид выполняются одинаковым способом.
Путем посылки намерения (Интент) с указанием файла и типа данных.
Далее система ищет по указанному типу файла, какие приложения зарегистрированы на обработку файлов этого типа,
Если приложение, которое может обработать этот файл, одно, то запускает активити приложения и передает туда ваш файл/данные.
Если приложений несколько - запускает диалоговое окно выбора приложения, которое будет выполнять обработку вашего файла.
Резюмируя это, смотрим на код:
uses
System.IOUtils, FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText;
procedure TForm7.btnOpenPDFClick(Sender: TObject);
const
SAMPLE_PDF_FILENAME = 'example.pdf';
var
Uri: Jnet_Uri;
OpenLinkIntent: JIntent;
PDFFileName: string;
begin
PDFFileName := TPath.Combine(TPath.GetDocumentsPath, SAMPLE_PDF_FILENAME); { Внутренний доступ}
Uri := StrToJURI(PDFFileName);
// Формируем намерение об открытии файла в стандартном приложении
OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);
// Устанавливаем тип данных
OpenLinkIntent.setType(StringToJString('application/pdf'));
OpenLinkIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP);
// Запускаем приложение и передаем ему наше намерение
try
SharedActivity.startActivity(OpenLinkIntent);
except on E: Exception do
ShowMessage('Не удалось открыть PDF. В системе нет доступных приложения для просмотра pdf');
end;
end;
В этом код pdf файл берется из самого пакета приложения (я включил pdf файл в пакет приложения).
Если вам нужно вытащить файл в любом другом месте, просто укажите в PDFFileName полный путь к файлу в файловой системе вашего устройства.
Проект доступен тут: OpenPDF.zip