zoukankan      html  css  js  c++  java
  • Android WebView 拦截自定义协议

    URL 语法

    URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
    
    
    URL的一般语法格式为:
    
    
    (带方括号[]的为可选项):
    
    
    protocol :// hostname[:port] / path / [;parameters][?query]#fragment 

    1 public static class CommonWebViewClient extends WebViewClient { 2 3 @Override 4 public boolean shouldOverrideUrlLoading(WebView view, String url) { 5 Log.d("leo", "[webViewUrl]" + url); 6 if (url.startsWith("tel")) {// 机构电话 7 Intent intent = new Intent(Intent.ACTION_DIAL); 8 intent.setData(Uri.parse(url)); 9 view.getContext().startActivity(intent); 10 return true; 11 } 12 Uri uri = Uri.parse(url); 13 if ("baonajia".equals(uri.getScheme())) { 14 if ("organization".equals(uri.getHost())) {// 课程详情跳转到机构详情 15 Organization organization = new Organization(); 16 organization.setId(uri.getQueryParameter("organization_id")); 17 organization.setName(uri.getQueryParameter("organization_name")); 18 Intent intent = new Intent(view.getContext(), OrganizationDetailActivity.class); 19 intent.putExtra(Const.EXTRA_ORG, organization); 20 view.getContext().startActivity(intent); 21 } else if ("course".equals(uri.getHost())) {// 机构详情跳转到课程详情 22 new CourseTask(view, uri.getQueryParameter("course_id")).execute(); 23 } else if ("school".equals(uri.getHost())) {// 机构详情跳转到校区列表 24 String orgId = uri.getQueryParameter("organization_id"); 25 Intent intent = new Intent(view.getContext(), SchoolListActivity.class); 26 intent.putExtra(Const.EXTRA_ORG_ID, orgId); 27 view.getContext().startActivity(intent); 28 } else if ("album".equals(uri.getHost())) {// 机构详情跳转到相册列表 29 String orgId = uri.getQueryParameter("organization_id"); 30 Intent intent = new Intent(view.getContext(), PhotoAlbumListActivity.class); 31 intent.putExtra(Const.EXTRA_ORG_ID, orgId); 32 view.getContext().startActivity(intent); 33 } 34 35 return true; 36 } else { 37 view.loadUrl(url); 38 return true; 39 } 40 } 41 42 @Override 43 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 44 Log.e(TAG, 45 String.format("errorCode: %s, description: %s, when open: %s", errorCode, description, failingUrl)); 46 view.loadUrl(URLCenter.getError()); 47 } 48 }
  • 相关阅读:
    存储过程output String[1]: Size 属性具有无效大小值0
    深入理解JS异步编程四(HTML5 Web Worker)
    深入理解JS异步编程三(promise)
    深入理解JS异步编程二(分布式事件)
    深入理解JS异步编程(一)
    不定高多行溢出文本省略
    深入解析js中基本数据类型与引用类型,函数参数传递的区别
    javascript的replace+正则 实现ES6的字符串模版
    从输入网址到显示网页的全过程分析
    WebStorage 和 Cookie的区别
  • 原文地址:https://www.cnblogs.com/jinglecode/p/5584400.html
Copyright © 2011-2022 走看看