通过Android中的深层链接将额外值传递给意图

时间:2015-12-16 19:06:39

标签: android android-intent deep-linking

为了myapp://wallet指向WalletActivity,我编写了以下代码,并且它有效:

    <activity
        android:name=".ui.WalletActivity"
        android:label="@string/title_activity_wallet"
        android:screenOrientation="portrait"
        android:theme="@style/MaterialThemeNoActionBar"
        android:launchMode="singleTop"
        android:exported="true">
        <intent-filter android:label="@string/title_activity_link_wallet" >
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="myapp"
                android:host="wallet" />
        </intent-filter>
    </activity>

我为UserProfileActivity执行了类似的操作,但它(显然)在行onCreate中的函数String id = intent.getExtras().getString("id");内崩溃,因为我没有为id发送任何值该活动的意图。

那么,在这种情况下,我有没有办法将id传递给被调用活动的意图,在正常情况下我会在调用活动中使用intent.putExtra("id", id);intent是被调用的活动)

1 个答案:

答案 0 :(得分:5)

对于深层链接,

String id = intent.getExtras().getString("id")是错误的。

您可以使用

检索与Intent相关联的Uri
Uri uri = getIntent().getData();

然后,您可以使用其中一个可用的getter来检索id,如果您提供的话。例如。 myapp://wallet/test?id=100

String id = data.getQueryParameter("id");

应该给你100