浏览器使用第三方开源github框架:
//浏览器 https://github.com/Justson/AgentWeb compile 'com.just.agentweb:agentweb:1.2.6'
7.0路径拦截存在适配问题shouldOverrideUrlLoading会分别访问不同参数的同一方法:
7.0以上系统访问
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
7.0以下系统访问
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
具体例如下:
public class MessageFragment extends Fragment {
View view;
@Bind(R.id.setting)
TextView setting;
@Bind(R.id.userInfo)
TextView userInfo;
@Bind(R.id.rootPr)
RelativeLayout rootPr;
private AgentWeb mAgentWeb;
public String url;
private boolean isGoToLogin = false;
private long currentMillTime = 0;
public static MessageFragment newInstance() {
MessageFragment mFragment = new MessageFragment();
Bundle bundle = new Bundle();
mFragment.setArguments(bundle);
return mFragment;
}
private String addSessionKey(String url) {
if (StringUtil.isEmpty(url)) return url;
if (url.indexOf("?") != -1) {
return url.replaceFirst("\\?","?sessionKey=" + SettingPrefUtil.getZHXFSession(getActivity()) + "&");
} else {
return url += "?sessionKey=" + SettingPrefUtil.getZHXFSession(getActivity());
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_message, null);
ButterKnife.bind(this, view);
url = MyConfigZHXF.Asset_EX_URL + "index_msg.html";
url = addSessionKey(url);
mAgentWeb = AgentWeb.with(getActivity())//传入Activity
.setAgentWebParent(rootPr, new RelativeLayout.LayoutParams(-1, -1))//传入AgentWeb 的父控件 ,如果父控件为 RelativeLayout , 那么第二参数需要传入 RelativeLayout.LayoutParams
.useDefaultIndicator()// 使用默认进度条
.defaultProgressBarColor() // 使用默认进度条颜色
//.setReceivedTitleCallback(this) //设置 Web 页面的 title 回调
.setWebViewClient(mWebViewClient)
.createAgentWeb()
.ready()
.go(url);
//zhxfAddHeaders(url); //智慧信访sessionKey 添加
return view;
}
private WebViewClient mWebViewClient=new WebViewClient(){
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if (StringUtil.isEmpty(url)) return true;
//是否使用第三方浏览器 返回true不调用 返回false调用
if (dealWithSpecialUrl(url)) return true;
//return super.shouldOverrideUrlLoading(view,request);
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (dealWithSpecialUrl(url)) return true;
return true;
//return super.shouldOverrideUrlLoading(view, url);
}
/*@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
String result = "<html>\n" +
"<title>点击访问</title>\n" +
"<body>\n" +
"<a href=\"www.lvche.com.cn\">XX科技</a>,一个为技术研发而生的科技型研发公司\n" +
"</body>\n" +
"<html>";
WebResourceResponse response = new WebResourceResponse("text/html",
"utf-8",
new ByteArrayInputStream(result.getBytes()));
return response;
}*/
};
private boolean dealWithSpecialUrl(String url) {
if (System.currentTimeMillis() - currentMillTime < 1000) {
currentMillTime = System.currentTimeMillis();
return true;
}
if (url.indexOf("index_login") != -1) {
LoginZHXFActivity.startActivity(getActivity());
isGoToLogin = true;
return true;
}
if (url.indexOf("index_set") != -1) {
SettingActivity.startActivity(getActivity());
return true;
}
if (!StringUtil.isEmpty(url)) {
BrowserLvcheActivity.startActivity(getActivity(), url);
return true;
}
return false;
}
private void zhxfAddHeaders(String url) {
//兑吧添加请求头
Map<String,String> map=new HashMap<>();
map.put("sessionKey", SettingPrefUtil.getZHXFSession(getActivity()));
mAgentWeb.getWebCreator().get().loadUrl(url,map);
}
public void reloadUrl() {
if (mAgentWeb != null) {
url = MyConfigZHXF.Asset_EX_URL + "index_msg.html";
url = addSessionKey(url);
if (mAgentWeb != null) mAgentWeb.getWebCreator().get().loadUrl(url);
}
}
@Override
public void onResume() {
super.onResume();
if (mAgentWeb != null && isGoToLogin) {
reloadUrl();
isGoToLogin = false;
}
}
@Override
public void onStart() {
super.onStart();
/*setting.setOnClickListener(new NoDoubleClickListener() {
@Override
public void onNoDoubleClick(View v) {
SettingActivity.startActivity(getActivity());
}
});
userInfo.setOnClickListener(new NoDoubleClickListener() {
@Override
public void onNoDoubleClick(View v) {
UserInfoActivity.startActivity(getActivity());
}
});*/
}
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
}
}