最近做项目遇到一个需求,用应用内WebView打开淘宝和支付宝来进行授权,之前没做过,写下来记录一下
1、首先webview要实现setWebViewClient,
shouldOverrideUrlLoadingByApp返回true由应用内webview处理,返回false则调用系统浏览器来处理
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (shouldOverrideUrlLoadingByApp(view, url)) {
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
判断传递的url是否是可被浏览器打开
/**
* 根据url的scheme处理跳转第三方app的业务
*/
private boolean shouldOverrideUrlLoadingByApp(WebView view, String url) {
if (url.startsWith("http") || url.startsWith("https") || url.startsWith("ftp")) {
//不处理http, https, ftp的请求
return false;
}
Intent intent;
try {
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException e) {
// XLLog.e(TAG, "URISyntaxException: " + e.getLocalizedMessage());
return false;
}
intent.setComponent(null);
try {
RenZhengWeb_Activity.this.startActivity(intent);
} catch (ActivityNotFoundException e) {
// XLLog.e(TAG, "ActivityNotFoundException: " + e.getLocalizedMessage());
return false;
}
return true;
}