美文网首页
Android 中的 router

Android 中的 router

作者: 7ff53e360bcc | 来源:发表于2017-08-23 12:10 被阅读23次

    Android 中的 router

    在正常的Android 开发过程中。常用的跳转逻辑是使用Intent,我们在处理应用内跳转的时候并无太多问题。

    Intent intent = new Intent(context, TartgetActivity.class);
    startActivity(intent);
    

    由于移动开发越来越灵活,前后端的依赖程度更高。所以更多的使用场景是后台来操作跳转。同时兼容多端,指哪打哪。

    具体使用场景如下:

    1. 服务器下发跳转路径,客户端根据服务器下发跳转路径跳转相应的页面或者执行相应动作
    2. H5页面点击锚点,根据锚点具体跳转路径App端跳转具体的页面或者执行相应动作
    3. App端收到服务器端下发的PUSH通知栏消息,根据消息的点击跳转路径跳转相关页面

    URL scheme

    客户端应用可以向操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用。通过指定的 URL 字段,可以让应用在被调起后直接打开某些特定页面,比如车辆详情页、订单详情页、消息通知页、促销广告页等等。也可以执行某些指定动作,如订单支付等。也可以在应用内通过 html 页来直接调用显示 app 内的某个页面。

    客户端自定义的 URL 作为从一个应用调用另一个的基础,遵循 RFC 1808 (Relative Uniform Resource Locators) 标准。这跟我们常见的网页内容 URL 格式一样。

    一个普通的 URL 分为几个部分,scheme、host、relativePath、query。

    http://www.baidu.com/s?rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709

    name value
    scheme http
    host www.baidu.com
    relativePath s
    query rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709

    根据上述Url,我们可以在自己的app中进行定制。

    例如:首先统一好各端的 scheme与host ,在path中,我们可以设置跳转,或者对话框等操作。

    • xixi://xixi.host/action/dialog

    • xixi://xixi.host/action/dial

    • xixi://xixi.host/action/copy

    • xixi://xixi.host/jump/main

    • xixi://xixi.host/jump/h5?url="http://www.google.com"

    处理relativePath

    检测为action的时候我们弹出对话框,进行拨号或者copy等操作。

    检测为jump的时候直接跳转到指定的Activity

    接受跳转的Activity需要在manifest中配置

    <!-- web可进入app -->
            <activity android:name=".ui.activity.SchemeFilterActivity">
    
                <!-- Schame -->
                <intent-filter>
                    <data
                        android:host="xixi.host"
                        android:scheme="xixi" />
    
                    <action android:name="android.intent.action.VIEW" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                </intent-filter>
    
            </activity>
    

    相关文章

      网友评论

          本文标题:Android 中的 router

          本文链接:https://www.haomeiwen.com/subject/qkeddxtx.html