悠哉的农民
悠哉的农民
  • 发布:2021-03-14 15:38
  • 更新:2021-03-16 11:15
  • 阅读:883

怎么接管webview里的download事件

分类:5+ SDK

默认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);
}

2021-03-14 15:38 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

可以尝试使用overrideUrlLoading:https://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewObject.overrideUrlLoading

  • 悠哉的农民 (作者)

    这种方式不好的啊,有的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

该问题目前已经被锁定, 无法添加新回复