2016-05-18 3 views
1

Ich habe eine Cordova App mit InAppBrowser und Whitelist Plugin. Leider werden Links zu PDF-Dateien nicht in die Webansicht geladen und der Benutzer sieht keinen "Datei öffnen in ..." -Dialog, um diese Dateien mit einer System-App zu öffnen.Cordova auf Android öffnet keine PDF Links (und zeigt nicht "Öffnen in ..." Dialog)

Hier sind einige Werte meiner config.xml:

Ich verstehe, dass Android nicht unterstützt, PDF-Dateien in einer Webansicht anzuzeigen. Aber wie kann ich Cordova veranlassen, den Dialog "Datei öffnen in ... (installierte System-App)" anzuzeigen?

+0

Bitte lesen Sie diese Antwort helfen, die u helfen. http://stackoverflow.com/questions/38462707/if-link-is-http-google-co-it-worked-but-if-i-change-link-to-my-pdf-url-i/38463242? noredirect = 1 # comment64330780_38463242 –

Antwort

0

für Android, können Sie es herunterladen zunächst lokal

$http.get(url, { 
responseType: 'blob' 
}) 
.success(function (blob) { 
    $cordovaFile.writeFile(path, filename, blob, true) 
    .then(function (file) { 
     // open the file 
     $cordovaFileOpener2.open(file.nativeURL.split('file://').pop(), 'application/pdf'); 
    }); 
}); 

Es wird die offen mit auf Android auslösen oder den Standard-PDF-Viewer öffnen, wenn seine bereits festgelegt. Sie können eine Dateiprüfung hinzufügen, um sicherzugehen, dass sie heruntergeladen wurde. $ cordovaFileTransfer funktioniert jetzt zwar, aber zu dem Zeitpunkt, als ich versuchte, es zu benutzen, funktionierte es nicht richtig.

+0

Vielen Dank für Ihre Lösung. Entschuldigung, ich habe vergessen, dass ich nach einer Lösung in Android-Code suche. – Matt

0

Ich habe eine funktionierende Lösung in Android Code gefunden. Einen WebViewClient in onCreate einstellen und prüfen, auf welche URL geklickt wurde. Für einen PDF-Link sende ich es an die System-Standard-App Sehr einfache Überprüfung, wenn der Link ein PDF ist. Könnte verbessert werden.

WebView cordovaView = (WebView) this.appView.getView(); 

    cordovaView.setWebViewClient(new SystemWebViewClient((SystemWebViewEngine) this.appView.getEngine()){ 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.contains(".pdf")) 
      { 
       Intent i = new Intent(Intent.ACTION_VIEW); 
       i.setData(Uri.parse(url)); 
       startActivity(i); 
      } 

      return true; 
     } 
    }); 
0

Das könnte Sie

url = "https://docs.google.com/gview?embedded=true&url="+YOUR_PDF_LINK; 
var documentLink = cordova.InAppBrowser.open(url, '_blank', 'location=no,hardwareback=yes'); 

documentLink.addEventListener('loadstart', function(event) { 

}); 

documentLink.addEventListener('exit', function(event) { 
    documentLink.removeEventListener("loadstart", function(e){}); 
}); 
Verwandte Themen