默认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);
}
悠哉的农民 (作者)
看来是uniapp的BUG,我测试在5+app模式下正常,UNIapp下就没反应还是吊起了下载
2021-03-17 11:37
回梦無痕
回复 悠哉的农民: 直接写vue页面的确不行,但可以加载一个本地html文件或者通过renderjs去运行这个setDownloadListener代码。
2021-03-17 13:48
回梦無痕
回复 悠哉的农民: 这个问题大概是因为,直接写vue页面上的代码是运行在逻辑层,需要把代码放到视图层去运行。
2021-03-17 13:50
悠哉的农民 (作者)
回复 回梦無痕: 感谢大佬的指点,我尝试了可以用evaljs方式来注入也是没问题的。
2021-03-17 14:46
newtome1111
回复 悠哉的农民:我用js注入的方式也不行,setDownloadListener设置以后,下载行为确实是拦截了,但是onDownloadStart里面的方法并没有执行。能不能贴一下你的代码,怎么写的?谢谢!
2021-09-10 14:46