2015-02-24 52 views
0

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

我已经把文件:

STARTUP \文档\为iOS

资产\内部\ Android的

与此代码:

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

iOS上正常工作...正确打开PDF

Android上没有...没有呃ror ..没有pdf ...如果我尝试打开一个html文件..工作正常。

有什么建议吗?

安东内

回答

3
{$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; 
+0

考虑到您的文件在下载夹。 – 2015-03-30 12:14:37

0

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