android 7.0 浏览器 拦截适配 shouldOverrideUrlLoading

来源:互联网 发布:吉田のしる知る 番号 编辑:程序博客网 时间:2024/06/07 05:20


浏览器使用第三方开源github框架:

//浏览器 https://github.com/Justson/AgentWebcompile 'com.just.agentweb:agentweb:1.2.6'
7.0路径拦截存在适配问题shouldOverrideUrlLoading会分别访问不同参数的同一方法:
7.0以上系统访问
@TargetApi(Build.VERSION_CODES.LOLLIPOP)@Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)


7.0以下系统访问
@Overridepublic 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);    }}


阅读全文
0 0