现在很多APP不单靠Android原生开发来完成,今天我们就遇到一个情况,app嵌入H5界面也就是我们通常用的Webview来显示。当进行点击操作跳转到对应的APP。比如说点击网页的导航跳转到高德地图进行路线规划,也或者是网页是一个淘宝衣服商品详情,点击客服咨询会跳转到淘宝。
First Blood
在布局添加WebView控件 so easy。
Doble Kill
接着就是在初始化WebView
Triple Kill
设置一些WebView的属性
Quadra kill 就是下面这些在setWebViewClient()方法里面进行处理
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
browser.goBack();
try {
//处理intent协议
if (url.startsWith("intent://")) {
Intent intent;
try {
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
intent.addCategory("android.intent.category.BROWSABLE");
intent.setComponent(null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
intent.setSelector(null);
}
List<ResolveInfo> resolves = getActivity().getPackageManager().queryIntentActivities(intent,0);
if(resolves.size()>0){
startActivity(intent);
}
return true;
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
// 处理自定义scheme协议
if (!url.startsWith("http")) {
Log.e("yxx","处理自定义scheme-->" + url);
try {
// 以下固定写法
final Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
} catch (Exception e) {
// 防止没有安装的情况
e.printStackTrace();
Toast.makeText(getContext(),"您所打开的第三方App未安装!",Toast.LENGTH_SHORT).show();
}
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
//handler.cancel(); 默认的处理方式,WebView变成空白页
// //接受证书
handler.proceed();
//handleMessage(Message msg); 其他处理
}
});
拿不了五杀了。