Android HybridApp开辟——自定义Schema的URI运用

本日只纪录小的简朴的东西,由于要睡觉了。

假如你想做一个Hybrid运用,或许有多种体式格局,或许运用PhoneGap,或许只运用WebView,或许在Native的某个页面嵌入一部分的WebView。

详细运用请以本身需求为准。那末本日说说最最轻量的一个计划:我们有这么个需求,有的页面须要运用 Native,有的页面须要运用WebView,同时,Native转变能够比较小,WebView的内容修改是许多的,由于WebView中显现的内容在服务器端,因而它的优点就是不须要晋级软件而直接为用户供应新功能。

那末基于这么一种营业需求,我们想到的个中一个要领就是运用自定义的Schema,运用一个一致的Schema治理器治理,关于差别的Schema我们应用Intent的一些特征,跳到我们所须要的Activity里,显现我们所须要的内容即可。

那末我们这里用到了一个很小的组件类就是java.net.URI 这个组件,想必瞥见这个类必然会想到java.net.URL类吧。URI全称是Uniform Resource Identifier(通用资本标识符),URL这个类是Uniform Resource Locator(一致资本定位符)(摘自百度百科)。许多人能够殽杂两个观点,实在只需只需URL是URI的子集即可,也就是说,相对来说,URI的定义会更普遍笼统一些。

援用一个我们自定义Schema的一个URI例子

lwy://cn.com.zjseek.lwy/news?id=2&path=3

这里Schema,Location,Path,Query等都俱全了,那末有什么用呢?
Location能够指定一个包名,我们用java.net.URI对象的组织函数天生后,用getHost要领能获取到它的“主机”

URI uri = new URI("lwy://cn.com.zjseek.lwy/news?id=2&path=3");
System.out.println(uri.getScheme()); // lwy
System.out.println(uri.getHost());  // cn.com.zjseek.lwy
System.out.println(uri.getPath());  // /news
System.out.println(uri.getQuery()); // id=2&path=3

运转这段代码能获得每一部分的效果。
那末组装Intent的时刻,能够指定包名(Host),然后指定Action名(path),然后增添通报的数据和Fragment(Query)。
如许就很好的把一个跳转到某个运用某个页面的的行动用URI指定出来。轻易运用和运用之间互相跳转。

Intent intent = new Intent();
intent.setPackage(uri.getHost());
intent.setAction(uri.getPath());
...

如许的URI也异常适合在WebView顶用<a>标签举行跳转,终究轻易了我们举行HybridApp的开辟。

    原文作者:Gemini
    原文地址: https://segmentfault.com/a/1190000000684921
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞