简体   繁体   中英

android intent-filter <data> is not working correctly

I am trying to have my application intercept on a specific URL in browser. following is my code in the 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>

it is working fine at the moment, when I open the link http://subdomain.maindomain.com/ , a dialog comes up with my activity listed on it.

but when I add android:path in the intent-filter like below, it stops working, it doesn't even work with simple url without the path.

<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>

am I doing something wrong here?

I tested what you said using these links and its working for me

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

And the intent i used is

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

The android:path must match after the host url that you gave for it to work ? Can you specify what URL did you use ? Read this link for help

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM