Uri

约定的url协议为:js://webview?arg1=111&arg2=222

  • schema

  • authority

  • parameters

image.png
  • 获取各部分
// 复写WebViewClient类的shouldOverrideUrlLoading方法
mWebView.setWebViewClient(new WebViewClient() {
                                      @Override
                                      public boolean shouldOverrideUrlLoading(WebView view, String url) {

                                          // 步骤2:根据协议的参数,判断是否是所需要的url
                                          // 一般根据scheme(协议格式) & authority(协议名)判断(前两个参数)
                                          //假定传入进来的 url = "js://webview?arg1=111&arg2=222"(同时也是约定好的需要拦截的)

                                          Uri uri = Uri.parse(url);                                 
                                          // 如果url的协议 = 预先约定的 js 协议
                                          // 就解析往下解析参数
                                          if ( uri.getScheme().equals("js")) {

                                              // 如果 authority  = 预先约定协议里的 webview,即代表都符合约定的协议
                                              // 所以拦截url,下面JS开始调用Android需要的方法
                                              if (uri.getAuthority().equals("webview")) {

                                                 //  步骤3:
                                                  // 执行JS所需要调用的逻辑
                                                  System.out.println("js调用了Android的方法");
                                                  // 可以在协议上带有参数并传递到Android上
                                                  HashMap<String, String> params = new HashMap<>();
                                                  Set<String> collection = uri.getQueryParameterNames();

                                              }

                                              return true;
                                          }
                                          return super.shouldOverrideUrlLoading(view, url);
                                      }
                                  }
        );
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 当你需要存储或者获取一个资源地址时用URI好还是URL好?首先要明确一下三个名称的意义 URI、URL和URN U...
    Niklaus_8871阅读 327评论 0 0
  • 一、URI和URL的区别: 1、URI:统一资源标识符,用来唯一的识别一个资源,包含URL和URN。Uri时And...
    Yangxy_Lazy阅读 807评论 0 0
  • url和uri的区别? url:统一资源定位符,通过这个可以找个这个资源uri:统一资源标识符,相当于资源的唯一性...
    春天里的布谷鸟阅读 2,166评论 0 3
  • 初识URL和URI URI URI,uniform resource identifier,统一资源标识符,用来唯...
    狮_子歌歌阅读 810评论 0 1
  • 很想找你聊会儿天, 我很想你,可是不敢找你聊天,怕你会烦
    张小猫笨阅读 151评论 0 0