如何在Android中强制使用相同意图过滤器的一个活动?

时间:2011-06-30 15:10:37

标签: android android-intent nfc intentfilter

我正在使用发现nfc制作Android应用程序。 当我发现NFC标签时,我必须选择应用程序(默认的Android应用程序和我的应用程序)。

我在Android系统的应用程序中可以做什么不要问什么应用程序我打开了什么? 我的想法是默认启动我的应用程序。

<activity android:name=".Test">
        <intent-filter>
            <action android:name="android.nfc.action.TAG_DISCOVERED"/>
           <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

2 个答案:

答案 0 :(得分:0)

似乎在Android上,应用程序本身无法将自身设置为默认处理程序,而是依赖于用户选择操作,如果有多个选项且未指定默认值。

该应用程序选择框应该有一个复选框,上面写着“默认情况下使用此应用程序”。如果用户每次都想使用您的应用程序,则需要检查该框。

答案 1 :(得分:0)

使用intent过滤器中的“data”元素来定义自定义MIME类型。

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <data android:mimeType="application/com.example.package" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

您可以将此意图过滤器添加到要启动的任何活动中。您甚至可以将此作为附加过滤器添加到启动器活动以及启动过滤器。

如果您这样做,可以使用以下代码确定您的活动是由NFC启动还是由启动图标启动:

Intent intent = getIntent();
if (intent.getType() != null && intent.getType().equals("application/com.example.package")) {
// app is launched from NFC
} else {
// app is launched from launcher icon
}