Android 深度 Link 具有不包含路径但仅包含数据的 URI

Android Deep Link with a URI that contains no paths but data-only

我想使用以下方案添加对深度 link URI 的支持:

xrb:xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp?amount=10000

amount参数可选,第二部分为必填地址。所以基本上模式是 xrb: 第一部分 xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp 是任何字符串并且 amount 是一个可选参数。

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

URI 是其他应用程序和服务使用的标准,因此我宁愿不更改它或做任何专有的事情,但是是否可以使用这种格式的 URI 进行深度 link?

基本上我所寻找的只是当单击包含 URI 的 link 时,应用程序将打开并根据 URI 为他们预加载一些数据。

谢谢!

通过在 AndroidManifest

中创建一个 intent-filter 来完成
<!-- 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>

并在 activity 的 onCreate

中检索 URI
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");
}