【发布时间】:2023-04-02 08:01:01
【问题描述】:
我正在将 pdf 文件下载到“下载”文件夹以供查看。对于 iOS 和 Win32,这很容易,因为 TWebBrowser 可以很好地处理 pdf 文件。我的问题是安卓。以下是我的代码:
if (FileExists(LFileName)) // pdf file is there
{
#if defined(_PLAT_IOS) || defined(_PLAT_MSWINDOWS)
Form1->WebBrowser1->URL = "file://" + LFileName;
Form1->WebBrowser1->Visible = true;
#endif
#if defined(_PLAT_ANDROID)
Androidapi::Jni::Graphicscontentviewtext::_di_JIntent intent =
TJIntent::Create();
intent->setDataAndType(StringToJString("file://" + System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDownloadsPath(), LFileName)), StringToJString(L"application/pdf"));
intent->setAction(TJIntent::JavaClass->ACTION_VIEW);
if (SharedActivity()->getPackageManager()->queryIntentActivities(intent, TJPackageManager::JavaClass->MATCH_DEFAULT_ONLY)->size() > 0) {
SharedActivity()->startActivity(intent);
} else {
ShowMessage("PDF viewer not found");
}
#endif
}
当我在 Android 上运行它时,它会打开 Adobe PDF 查看器,但不会打开文件。
我猜我没有正确传递 pdf 文件名。有什么想法吗?
编辑:好的,file:// 的使用已被弃用,看起来唯一的方法是通过 FileProvider - 根据this SE question。对于我这个级别的人来说,艰难的道路是数英里。我只想显示一个 pdf。
谢谢, 罗斯
【问题讨论】:
-
我在这上面花了 3-4 天,这看起来就像一场真正的噩梦。我在 Android 组上看到的解决方案适用于 Api 10,但失败 >=10。我们真的需要一个在 Android 上显示 pdf 文件的 FMX 控件(就像 iOS 上的
TWebBrowser一样)。
标签: firemonkey c++builder c++builder-10.3-rio