Android Deep Link的URI不包含路径,仅包含数据

时间:2018-12-14 21:13:44

标签: android uri deep-linking

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

xrb:xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp?amount=10000

amount参数是可选的,第二部分是必需的地址。因此,本质上,架构是xrb:,第一部分xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp是任何字符串,amount是可选参数。

看一下Android文档here,我不清楚的是如何从我的活动中检索数据,尤其是对于那些不作为参数进入的部分(xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp

URI是其他应用程序和服务使用的标准,因此我不希望对其进行更改或进行任何专有的操作,但是是否可以使用这种格式的URI进行深层链接?

基本上我要寻找的是单击包含URI的链接时,应用程序将打开并根据URI为其预加载一些数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

通过在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>

并在活动的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");
}