Je veux ouvrir un PDF dans mon WebView et j'ai trouvé et combiné des codes sur ce forum.
Mais il détecte le "Non PDF application trouvée" bien que plusieurs PDF applications soient installées, y compris Adobe Reader.
Voici le code:
private class PsvWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
if (url.contains(".pdf")) {
Uri path = Uri.parse(url);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try
{
startActivity(pdfIntent);
}
catch(ActivityNotFoundException e)
{
Toast.makeText(PsvWebViewActivity.this, "No PDF application found", Toast.LENGTH_SHORT).show();
}
catch(Exception otherException)
{
Toast.makeText(PsvWebViewActivity.this, "Unknown error", Toast.LENGTH_SHORT).show();
}
}
return true;
} } }
(1) Google Docs Viewer, vous pouvez l’ouvrir dans le navigateur Android comme,
mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+ webUrl);
Mettre à jour:
(2) Vérifiez cette bibliothèque , dans build.gradle (module d'application) ajoutez cette dépendance,
compile 'com.github.barteksc:Android-pdf-viewer:2.8.2'
Je sais, cette question est ancienne.
Mais j'aime beaucoup l'approche de Xamarin pour utiliser le pdf.js de Mozilla. Cela fonctionne sur les anciennes versions d'Android, vous n'avez pas besoin d'une application spéciale PDF Viewer pour cela et vous pouvez facilement afficher un PDF dans la hiérarchie de vos vues d'applications.
Git pour cela: https://mozilla.github.io/pdf.js/
Options supplémentaires: https://github.com/mozilla/pdf.js/wiki/Viewer-options
Ajoutez simplement les fichiers pdfjs à votre répertoire Assets:
Et appelez ça de la manière suivante:
// Assuming you got your pdf file:
File file = new File(Environment.getExternalStorageDirectory() + "/test.pdf");
webview = (WebView) findViewById(R.id.webview);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setBuiltInZoomControls(true);
webview.setWebChromeClient(new WebChromeClient());
webview.loadUrl("file:///Android_asset/pdfjs/web/viewer.html?file=" + file.getAbsolutePath());
Chose cool: Si vous voulez réduire le nombre de fonctionnalités/contrôles. Accédez au fichier Assets/pdfjs/web/viewer.html et marquez certains contrôles comme étant masqués. Avec
style="display: none;"
Par exemple. Si vous n'aimez pas la bonne barre d'outils:
<div id="toolbarViewerRight" style="display: none;">...</div>
vous pouvez essayer ceci . cela fonctionne pour les deux.pdfet.docx
String pdfUrl = "https://www.abcd.com/assets/uploads/profilepics/abc.pdf"; //your pdf url
String url = "http://docs.google.com/gview?embedded=true&url=" + pdfUrl;
WebView webView = findViewById(R.id.webview_cv_viewer);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);