Android应用程序中的深度链接

Android应用程序中的深度链接,android,deep-linking,Android,Deep Linking,我正在尝试在我的应用程序中启用深度链接。以下是我在AndroidManifest中运行的代码: <activity android:name=".ui.WalletActivity" android:label="@string/title_activity_wallet"> <intent-filter android:label="@string/title_activity_link_wallet" > <action

我正在尝试在我的应用程序中启用深度链接。以下是我在AndroidManifest中运行的代码:

<activity
    android:name=".ui.WalletActivity"
    android:label="@string/title_activity_wallet">
    <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>


要点击
myapp://wallet
要打开我的应用程序的
WalletActivity

要测试并确保您的意图有效,您可以按照

要在uri中传递参数,只需将它们添加为普通查询参数(即
example://gizmos/path?key=value
,然后通过如下方式解析意图数据来检索它们:

    Uri uri = getIntent().getData();
    String value = uri.getQueryParameter("key");
    Intent intent = getIntent();
    String providerUrl = intent.getData().toString();
    UrlQuerySanitizer sanitizer = new UrlQuerySanitizer();
    sanitizer.setAllowUnregisteredParamaters(true);
    sanitizer.parseUrl(providerUrl);
    String id = sanitizer.getValue("id");

确保您检查空值等。

在我的应用程序中,这可以正常工作:

    <activity
       android:name=".ui.WalletActivity"
       android:label="@string/title_activity_wallet">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
       <intent-filter>
            <data android:scheme="myapp" android:host="wallet" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity>
(您可以阅读关于
URLQueryInitiatizer


为了测试,我建议发送myapp://wallet 通过电子邮件链接到您自己,例如:-)(或评论中提到的adb)

您测试过吗?您没有启动活动吗?是的,我已经通过键入
myapp://wallet
在浏览器上,但所需的应用程序未打开,更不用说活动了。请尝试使用文档中建议的方法:adb shell am start-W-a android.intent.action.VIEW-d“example://gizmos“com.example.android就是这样。但是,在浏览器中键入它不应该也起作用吗?不要这样认为-不仅仅是这样输入。我尝试了这段代码,但在这行“String providerUrl=intent.getData().toString();”中得到了“null”