代码之家  ›  专栏  ›  技术社区  ›  bbedward

Android深度链接,其URI不包含路径,只包含数据

  •  0
  • bbedward  · 技术社区  · 6 年前

    我想添加对具有以下方案的URI深度链接的支持:

    xrb:xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp?amount=10000
    

    这个 amount 参数是可选的,第二部分是必需的地址。所以基本上模式是 xrb: 第一部分 xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp 是任何字符串和 数量 是可选参数。

    查看Android文档 here ,我不清楚的是如何从我的活动中检索数据,特别是对于不作为参数的部分( xrb_3wm37qz19zhei7nzscjcopbrbrnnachs4p1gnwo5oroi3qonw6inwgoeuufdp )

    URI是其他应用程序和服务使用的标准,因此我不想更改它或做任何专有的事情,但是是否可以与这种格式的URI建立深度链接?

    基本上,我所要寻找的就是当点击一个包含URI的链接时,应用程序将打开并根据这个URI为它们预加载一些数据。

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   bbedward    6 年前

    通过创建 intent-filter 在AndroidManifest中

    <!-- xrb uri scheme -->
    <intent-filter android:label="@string/app_name">
        <action android:name="android.intent.action.VIEW" />
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    
        <data android:scheme="xrb" />
    </intent-filter>
    

    并在活动的 onCreate

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
    if (data != null) {
        Timber.d("inuri %s", data.toString());
    } else {
        Timber.d("inuri null");
    }