现在淘宝网站貌似升级了,安卓开发时,用webview打开淘宝网站时会自动打开掏宝app。(其他浏览器也是这样)。如何阻止打开淘宝网站时自动打开淘宝app。
大神们,没人知道这个问题的答案吗?拜托了
这个问题折磨了一个礼拜,有两个解决办法:1,集成腾讯的X5webview,可以禁止跳转 2,集成阿里百川必须初始化成功之后调用https://blog.csdn.net/shma1022/article/details/75336795这个博客上的第二个方法,方法调用场景在WebViewClient类的重写shouldOverrideUrlLoading方法中,就可以了。 两者区别是啥呢?第一种解决方案,因为别人封装度太高了,第三方授权免登录也会被禁止掉。第二种就是别人官方的东西,授权免登录淘宝,。用起来比较舒服
1.监测WebView发送的意图。一般情况下,Android Studio中的日志,是可以看到究竟发送的是什么意图的。
2.自己写一个App可以接受并拦截该意图
https://zhidao.baidu.com/question/754271646453725164.html
webview中的js启动外部程序时,也相当于发出一个请求,重写webClient
的 shouldOverrideUrlLoading(WebView view, String url)
方法,可以拦截掉该请求。
这个请求的格式应该是在手淘Manifest中填写的,我查看了下手淘打开程序的的scheme是这样的 taobao://m.taobao.com
应该可以通过比较请求的地址拦截
掉,如果没拦截到,可能是scheme不太对,你可以用日志打印出来具体看下。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view,url);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
});
我试了下在三星S7 6.0 小米6 7.1这样不会出现
重写webClient的 shouldOverrideUrlLoading(WebView view, String url)方法,其中shouldOverrideUrlLoading方法如下,拦截掉不是http开头的链接特别要拦截taobao://开头的链接,拦截后直接return false
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!url.startsWith("http://")) {
return false;
}
view.loadUrl(url);
return true;
}}