拦截网址以启动应用程序

时间:2013-12-10 20:19:28

标签: java android

我正在尝试拦截网址,以便在用户访问网址时打开我的应用程序。我在相关问题https://stackoverflow.com/a/2958870

中关注此答案

我在AndroidManifest.xml中添加了以下内容

   <activity
        android:name="com.myapp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <data android:scheme="http" android:host="myapp.com"/>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

onCreate的{​​{1}}

中有以下内容
MainActivity.java

当我在模拟器中启动应用程序时,我注意到“Data is null”调试消息即将到来。我必须将Uri data = getIntent().getData(); //String scheme = data.getScheme(); //String host = data.getHost(); if (data == null) Log.d("Data is null", ""); else Log.d("Data is not null", ""); scheme注释掉,因为这导致我的应用程序在加载时失败,我猜的原因是因为host为空。

我错过了什么或做错了什么?

修改:我尝试过像这样拆分intent-filter:

data

另外,当我只有一个intent-filter(下面)时,当我在android studio中按 <activity android:name="com.myapp.MainActivity" android:label="@string/app_name" > <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:host="myapp.com" android:scheme="http" /> </intent-filter> </activity> 时,我的应用程序甚至都没有在模拟器上启动。

run

1 个答案:

答案 0 :(得分:1)

请尝试使用此意图过滤器:

<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:host="myapp.com" android:scheme="http" />
</intent-filter>

这是一个隐含的意图,但我尝试了它,它对我有用。我认为您需要android.intent.category.BROWSABLE类别。