我尝试使用 wevbview 从可选列表中打开 pdf,但是当我单击应用程序时没有任何反应,我已经给了应用程序互联网权限也读取和写入(很难不需要)以扩展存储。谁能给我一个提示?
我已经测试了谷歌文档版本,它可以与之配合使用,但是那里有登录和打印按钮,它们在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;
所以我更改了代码,因此它应该只是下载文件,而不是在 web 视图中查看。我仍然不知道为什么上面的代码没有调用设备上的默认pdf查看器。我已经在我的设备上安装了超过 5 个 pdf 查看器,并使其中至少有 3 个默认进行测试 - 不起作用。所以最后我只是更改了 shouldOverrideUrlLoad 以在 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"/>
这为我修复了它。