WebView télécharger ouvre la fenêtre du navigateur pour un court instant avant de retourner à WebView
Mon Problème est que quand j'appuie sur le lien pdf dans la webview, le navigateur s'ouvre pendant un court instant (je suppose pour télécharger le fichier lié), le fichier pdf commence à télécharger et l'application retourne à la webview. Est-il un moyen d'empêcher le navigateur de l'ouverture de la fenêtre pour lancer le téléchargement?
J'ai utilisé WebViewClient à shouldOverrideUrlLoading donc cliqué url sont conservés dans la webview:
private class LinkWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
Et j'ai télécharger un auditeur afin que je puisse télécharger des fichiers (pour mes besoins ce sont les fichiers pdf):
webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
OriginalL'auteur qubz | 2010-12-21
Vous devez vous connecter pour publier un commentaire.
Ajouter le type MIME à votre
Intent
vous utilisez avecstartActivity()
dans votre téléchargement de l'auditeur.Après l'ajout de la ligne ci-dessus, je clique sur le lien de fichier que j'ai Adobe PDF Reader est installé, il s'ouvre. Mais il semble que le fichier n'a pas été téléchargé car il n'apparaît pas dans le dossier de téléchargement ou le lecteur de pdf liste.
Si vous voulez le télécharger, vous devez le télécharger. Ce n'est pas différent de celui, par exemple, l'affichage d'un PDF dans IE ou Chrome, il vient dans le navigateur seul, et vous avez besoin de prendre des mesures supplémentaires pour économiser de l'. Dans les navigateurs de bureau, le plugin PDF a une option Enregistrer sous pour ce. Je ne sais pas si le logiciel Adobe Reader ou d'autres lecteurs de PDF offre une installation similaire (par exemple, via le menu des options). Vous pouvez être mieux servi à faire le télécharger vous-même, de le ranger où vous voulez le stocker, puis de le faire
ACTION_VIEW
sur votre copie.Pour plus de clarté, vous dites qu'il n'y a pas moyen de télécharger le fichier dans la webview sans ouvrir le navigateur pour une brève seconde? Si j'effectue la même action dans le navigateur, le fichier se télécharge à partir de la même page, je suis visualisation. Il n'est pas nécessaire pour le navigateur pour ouvrir un nouvel onglet vide/page comme la webview ne de le télécharger.
Quand je dis "vous avez besoin de le télécharger, je veux dire en utilisant
HttpClient
et de le faire à partir de Java. "Si j'effectue la même action dans le navigateur, le fichier se télécharge à partir de la même page, je suis visualisation." -- c'est parce que le navigateur auteurs ont écrit le code Java et téléchargé viaHttpClient
ou quelque chose, sans doute. Tout ce que je peux vous dire, c'est queACTION_VIEW
n'implique pas qu'une ressource HTTP est définitivement téléchargé -- si c'était le cas, votre téléphone aurait exécuter de stockage il y a des mois. Si vous voulez le HTTP ressources à télécharger de manière définitive, l'utilisationHttpClient
et de le télécharger.OriginalL'auteur CommonsWare