android intent-filter <data>无法正常工作</data>

时间:2013-07-31 05:52:02

标签: java android android-activity intentfilter

我正在尝试让我的应用程序拦截浏览器中的特定URL。以下是我在Manifest中的代码:

<activity
            android:name="com.myactivity.RootActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="http" />
                <data android:host="subdomian.maindomain.com" />

            </intent-filter>
        </activity>

目前工作正常,当我打开链接http://subdomain.maindomain.com/时,会出现一个对话框,其中列出了我的活动。

但是当我在如下所示的intent-filter中添加android:path时,它会停止工作,它甚至不使用没有路径的简单URL。

<activity
            android:name="com.myactivity.RootActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="http" />
                <data android:host="subdomian.maindomain.com" />
                <data android:path="myPath" />

            </intent-filter>
        </activity>
我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

我使用这些链接测试了你说的内容并为我工作

<data android:scheme="http" />
<data android:host="developer.android.com" />
<data android:path="/guide/topics/manifest/data-element.html"/>

我使用的意图是

Intent browserIntent = new Intent(
    Intent.ACTION_VIEW,
    Uri.parse("http://developer.android.com/guide/topics/manifest/data-element.html"));
startActivity(browserIntent);

android:path必须在您为其提供的主机网址后匹配吗? 你能指定你使用的URL吗? 阅读this链接以获取帮助