默认webview里面存在下载的话会提示一个下载框,但是下载完毕后没有提示安装也没有显示文件位置。所以我打算用默认浏览器来接管webview里面的下载事件,但是尝试使用setDownloadListener没用啊。不要说通过拦截url的方式,那种方式太容易出错了。
我的代码如下:
boxNativeSetting(){
var native = box.nativeInstanceObject();
// 重写方法
var DownloadListener = plus.android.implements("android.webkit.DownloadListener",{
"DownloadStart":function(url,userAgent,contentDisposition,mimeType,contentLength){
console.log(url);
plus.runtime.openURL(url);
}
});
plus.android.invoke(native,"setDownloadListener",DownloadListener);
}
悠哉的农民 (作者)
这种方式不好的啊,有的url它没有.APK之类的,而是通过协议头方式下载的。而且不光apk,到时候来个zip,7z等后缀的也很多。出错率很高。官方现在的默认下载会调用系统下载,官方能不能把这种方式开放个API让我们监听webview下载事件自己来处理。这个我觉得需要重视优化下。现在webview的下载体验太差了。里面下载好了文件都不知道去哪了
2021-03-16 18:47
MonikaCeng
回复 悠哉的农民: 根据header里的conteng-type就可以判断是否是下载源。其实我有更棘手的问题,webview里的网页图片如何长按保存?
2021-03-17 00:09
newtome1111
回复 MonikaCeng: 拦截webview的touchstart,touchmove,touchend事件,可以自定义长按事件。可否详细描述一下,如何通过conteng-type判断是否下载源?
2021-09-10 13:55