2017-05-02 94 views
0

私は1つのwebviewでXamarin Androidアプリを持っています。私はそのwebviewのローカルフォルダからPDFを表示したいと思います。Xamarin:Android WebViewにローカルPDFが表示されない

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <include 
    android:id="@+id/toolbar" 
    layout="@layout/toolbar" /> 
    <WebView 
    android:id="@+id/pdfContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
</LinearLayout> 

そして、ここが私の活動のコードです:

[Activity(Label = "ViewPdfActivity", ParentActivity = typeof(IssueDetailsActivity))] 
public class ViewPdfActivity : Activity 
{ 
    private WebView pdfContainer; 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     SetContentView(Resource.Layout.ViewPdf); 

     this.pdfContainer = this.FindViewById<WebView>(Resource.Id.pdfContainer); 
     this.pdfContainer.SetBackgroundColor(Color.Black); 
     this.pdfContainer.SetWebChromeClient(new WebChromeClient()); 

     var toolbar = this.FindViewById<Toolbar>(Resource.Id.toolbar); 
     this.SetActionBar(toolbar); 

     this.ActionBar.SetDisplayHomeAsUpEnabled(true); 

     var pdfUrl = Intent.GetStringExtra("PdfUrl"); 
     this.LoadPdf(pdfUrl); 
    } 

    private void LoadPdf(string pdfUrl) 
    { 
     var file = $"file://{System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)}/{pdfUrl}"; 

     this.pdfContainer.LoadUrl(file); 

     this.pdfContainer.SetWebChromeClient(new WebChromeClient()); 
    } 
} 

私は、コードを実行すると、私は空のページを参照してくださいここで

は私のレイアウトファイルです。

05-02 19:47:56.104 E/libEGL(4263):validate_display:99エラー3008(EGL_BAD_DISPLAYコンソールデバッグ出力は、私は本当にこの特定の事に関連することはできませんが、何かことnonthelessことができるといくつかの情報を示しています) 05-02 19:47:56.172 W/VideoCapabilities(4263):ビデオ/ avcのための未知のプロファイル2130706433 05-02 19:47:56.276 I/VideoCapabilities(4263):サポートされていないプロファイル4 for video/mp4v-es

Androidのドキュメントに示唆されているように、私はインターネットの許可を追加しました。

はい、ファイルが存在します。私はFile.Existsを実行する前にこのアクティビティにナビゲートし、ダウンロードされているかどうかを確認します。

+0

WebViewはpdfをサポートしていません。 – greenapps

答えて

0

Android WebViewでは、iOSのようにローカルのpdfファイルを読み取ることができません。 あなたができることは電話のデフォルトのPDFリーダーでファイルを開くことです。

これは、PDFファイルを開くためのコードです:

 //Copy the private file's data to the EXTERNAL PUBLIC location 
     var externalPath = Environment.ExternalStorageDirectory.Path + "/{name of your pdf file}.pdf"; 
     File.WriteAllBytes(externalPath, pdfDocument); 

     Java.IO.File file = new Java.IO.File(externalPath); 
     file.SetReadable(true); 
     Android.Net.Uri uri = Android.Net.Uri.FromFile(file); 
     Intent intent = new Intent(Intent.ActionView); 
     intent.SetDataAndType(uri, "application/pdf"); 
     intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask); 

     this.StartActivity(intent); 

は、この情報がお役に立てば幸いです。

+0

これは本当に悪いことです。私は外部の読者でそれを開く必要があります。なぜなら、主に浸水を壊すからです。解決策へのフォローアップの質問:それを公開する前に公開エリアにコピーする必要がありますか?これは、PDFを公開するだろう.. – Christoffer

+0

私はこれを試して、それはうまく動作しませんでした... – Christoffer

関連する問題