关于URL Scheme的基本原理,这里不多说了,简单介绍一下使用到的scheme参数格式,比如启动天猫客户端的url scheme格式:
tmall://tmallclient/?{"action":”item:id=xxxxx”}
其中xxxxx是商品的id。
从中抽取”id=“后面的11位数字,此为商品ID,然后,通过下面的URL启动天猫客户端:
tmall://tmallclient/?{"action":”item:id=36615660686”}
先说一下需求,我们这个项目是和天猫合作的,天猫返回的url就是tmall://开头的,我要用webview加载这个url,但是这个不是合法的url,用webview加载会显示404,跟踪了一下,进入到了WebViewClient的onReceivedError方法中了,所以加载不出来正确的url。解决方法就是覆盖shouldOverrideUrlLoading方法,直接返回true就可以了,代码如下:
public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url != null && url.startsWith("tmall://")) { return true; } else { return false; } }
stackoverflow:http://stackoverflow.com/questions/3583264/support-for-other-protocols-in-android-webview