根据WebView里面的链接字符串跳转Activity
activityBaseWebAddWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith(Url.urlHost + "/weixin/getJsp?url=wechatweb/business-member")) {//包含这个Url字符就跳转
startActivity(new Intent(BusinessDetailWebActivity.this, My_BusMemberActivity.class).putExtra("url", url));
}else if (url.startsWith(Url.urlHost + "/weixin/getJsp?url=wechatweb/crowdfund-info")) {
startActivity(new Intent(BusinessDetailWebActivity.this, BusinessCrowdFoundingWebActivity.class).putExtra("url", url));
} else if(url.startsWith("http://images.yxtribe.com/upload/images/business/")) {
Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(webIntent);
} else {
url += "&appFlg=1";
view.loadUrl(url);
}
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.getSettings().setJavaScriptEnabled(true);
}
@Override
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);
// 这段js函数的功能就是,遍历所有的img节点,并添加onclick函数,在还是执行的时候调用本地接口传递url过去
view.loadUrl(CommonString.imgClickWithShowClass);
}
});
1、webview与原生交互——根据js方法跳转到Activity
activityBaseWebAddWebView.addJavascriptInterface(new WebViewJavaScriptFunction() {
@Override
public void onJsFunctionCalled(String tag) {
// TODO Auto-generated method stub
}
@JavascriptInterface
public void goToBusinessChatRoom() {
// window.yxbl_app.toChat() //js调用android源码方法,发起环信聊天
if (TextUtil.isEmpty(groupid)){
Toast.makeText(getApplicationContext(), "该群不存在", Toast.LENGTH_SHORT).show();
return;
}
gotoliaotian();
}
@JavascriptInterface
public void toCompanyDetail(String epId, String accessPath, String a) {//网页定义的方法名相同即可,同时可以传参数
// window.yxbl_app.toCompanyDetail() //js调用android源码方法
Intent intent = new Intent(BusinessDetailWebActivity.this, CompanyDetailWebActivity.class);
intent.putExtra("epId", Integer.parseInt(epId));
intent.putExtra("accessPath", accessPath);
startActivity(intent);
}
@JavascriptInterface
public void BusinessVisit(int aid,String aname,String ac,String ap) {
// Log.v("Lgq","newo[==="+aname);
// window.yxbl_app.toCompanyDetail() //js调用android源码方法
// Intent intent = new Intent(BusinessDetailWebActivity.this, CompanyDetailWebActivity.class);
// intent.putExtra("epId", Integer.parseInt(epId));
// intent.putExtra("accessPath", accessPath);
// startActivity(intent);
}
@JavascriptInterface
public void openImage(String imageUrls, String img) {
Intent intent = new Intent();
intent.putExtra("imageUrls", imageUrls);
intent.putExtra("curImageUrl", img);
Log.v("lgq","tophoto===== "+img+"..... "+ imageUrls);
intent.setClass(BusinessDetailWebActivity.this, PhotoBrowserActivity.class);
startActivity(intent);
}
@JavascriptInterface
public void gotoGongxu() {
Intent intent = new Intent();
intent.setClass(BusinessDetailWebActivity.this, GongXuActivity.class);
startActivity(intent);
}
@JavascriptInterface
public void gotoInvestment(String id) {
Intent intent = new Intent();
// web页面跳转投资列表
intent.setClass(BusinessDetailWebActivity.this, GongXuActivity.class);
startActivity(intent.putExtra("id", id));
}
}, CommonString.js2Android);
}
2、原生与webview交互:changeColor是js方法,viewColor是参数
activityBaseWebAddWebView.loadUrl("javascript:changeColor('" + viewColor + "')");
附:自定义接口
/**
* 作者:created by meixi
* 邮箱:1085220040@qq.com
* 日期:2019/7/22 09
*/
public interface WebViewJavaScriptFunction {
void onJsFunctionCalled(String tag);
}