2015-02-24 77 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獲得公開發布所需的許可,但在此之前,我必須找到清理時間,製作一個真實組件,例如...