Delphi从ios / Android本地存储打开PDF

我试图从本地存储在移动设备上打开PDF文件。

我已经把文件:

启动\文件\为iOS

assets \ internal \ for Android

与此代码:

filename := TPath.Combine(TPath.GetDocumentsPath, 'file.pdf'); WebBrowser1.Navigate('file://' + filename); 

在iOS上工作正常…正确打开PDF

在Android上…没有..没有错误..没有PDF …如果我尝试打开一个HTML文件..工作正常。

有什么build议么 ?

安东内洛

 {$IFDEF ANDROID} Uses Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Net; {$ENDIF} 

 procedure btnPdfClick(Sender: TObject); var fName : String; {$IFDEF ANDROID} Intent : JIntent; URI : Jnet_Uri; {$ENDIF} begin fName := TPath.GetSharedDownloadsPath + PathDelim + 'test.pdf'; {$IFDEF ANDROID} URI := TJnet_Uri.JavaClass.parse(StringToJString('file:///' + fName)); intent := TJIntent.Create; intent.setAction(TJIntent.JavaClass.ACTION_VIEW); intent.setDataAndType(URI,StringToJString('application/pdf')); SharedActivity.startActivity(intent); {$ENDIF} end; 

可以通过XE7中的JNI birdge使用Android PDFView组件。 https://github.com/JoanZapata/android-pdfview Java2op工具可以生成所需的接口pas文件,IDE可以pipe理classes.dx文件中的更改,这是很容易的部分。 把它带到delphi居住需要一点点工作,但这是可行的。 为此,您几乎可以从delphi“webview”实现中获取代码1:1,它可以在FMX.Webbrowser.pas文件中的TCustomWebBrowser和FMX.WebBrowser.Android.pas文件中的TAndroidWebBrowserService中find以下两个类。 对于我的概念certificate,我写了一个从TControl派生的TPDFViewAndroid类,使用两个提及类的代码。 因此,我正在从Embarcaderro获得公开发布所需的许可,但在此之前,我必须find时间清理,制作一个真正的组件,例如…