截取跳转的url 解析json串,跳转native
wv_news.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
include.setVisibility(View.GONE);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
//webview 拦截页面跳转
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("cn.com.greatchef://?params=")) {
//截取剩余的字符串
String replace = url.replace("cn.com.greatchef://?params=", "");
SuyanLog.i("json串", replace);
//解析跳转
H5ToNative.parseNewsInfoJson(replace, NewsDeteilActivity.this);
}
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
include.setVisibility(View.GONE);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
//webview 拦截页面跳转
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("cn.com.greatchef://?params=")) {
//截取剩余的字符串
String replace = url.replace("cn.com.greatchef://?params=", "");
SuyanLog.i("json串", replace);
//解析跳转
H5ToNative.parseNewsInfoJson(replace, NewsDeteilActivity.this);
}
return super.shouldOverrideUrlLoading(view, url);
}
});
public class H5ToNative {
public static void parseNewsInfoJson(String result, Activity mActivity) {
try {
// Toast.makeText(getApplicationContext(), result, 0).show();
Gson gson = new Gson();
// 不是下拉加载更多
PushInfo.Custom custom = gson.fromJson(result, PushInfo.Custom.class);
String des = custom.des;
String skuid = custom.skuid;
String link = custom.link;
if ("foodview".equals(des)) {
//进入菜品详情页面
EnterClass.enterFoodDetil(skuid, mActivity);
}
} catch (Exception e) {
// Toast.makeText(this, "解析数据失败", Toast.LENGTH_LONG).show();
}
}
}
public static void parseNewsInfoJson(String result, Activity mActivity) {
try {
// Toast.makeText(getApplicationContext(), result, 0).show();
Gson gson = new Gson();
// 不是下拉加载更多
PushInfo.Custom custom = gson.fromJson(result, PushInfo.Custom.class);
String des = custom.des;
String skuid = custom.skuid;
String link = custom.link;
if ("foodview".equals(des)) {
//进入菜品详情页面
EnterClass.enterFoodDetil(skuid, mActivity);
}
} catch (Exception e) {
// Toast.makeText(this, "解析数据失败", Toast.LENGTH_LONG).show();
}
}
}
该博客介绍了如何在H5中截取特定格式的URL,通过解析JSON参数,实现在WebView中触发原生页面的跳转。主要涉及到的方法包括WebViewClient的shouldOverrideUrlLoading方法,用于拦截页面跳转,并根据URL前缀判断是否需要进行处理。同时,使用Gson库解析JSON字符串,获取所需参数,进而调用相应的方法进入不同的原生页面。

4936

被折叠的 条评论
为什么被折叠?



