我正在尝试使用wevbview从可选列表中打开pdf`,但是当我单击应用程序时没有任何反应,我给应用程序提供了Internet权限,也可以读写(不需要)到外部存储。谁能给我一个提示?
我已经测试了可与之一起使用的google docs版本,但是那里有登录和打印按钮,这些按钮在Webview中不起作用,并且希望用户保存他们选择查看的pdf
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.endsWith(".pdf")){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "application/pdf");
try{
view.getContext().startActivity(intent);
} catch (ActivityNotFoundException e) {
//user does not have a pdf viewer installed
}
} else {
webview.loadUrl(url);
}
return true;
答案 0 :(得分:0)
好,所以我更改了代码,因此应该只下载文件,而不是在Webview中查看。我仍然不知道为什么上面的代码没有在设备上调用默认的pdf查看器。我已经在设备上安装了5个以上的pdf查看器,并使其中至少3个默认查看器可以测试-没用。因此,最后,我只是更改了shouldOverrideUrlLoading以将文件下载到ext存储中,然后,用户可以通过他想要/已经安装的任何应用打开它。解决方案:
public boolean shouldOverrideUrlLoading (WebView view, String url) {
if (url.endsWith(".pdf")) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
return false;
}
还添加了用于访问默认下载管理器和外部存储的清单的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
这为我修复了它。