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

问题描述:

我正在制作一款带有发现nfc的Android应用程序。 当我发现一个NFC标签时,我必须选择应用程序(默认的Android应用程序和我的应用程序)。如何使用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> 

这似乎在Android上的应用程序本身不能将自己设置成为默认的处理程序,而是依靠用户来选择的动作,如果有多个选项,并没有指定的默认。

该应用程序选择框应该有一个复选框,表示沿着“默认使用此应用程序”的行。如果用户每次想要使用您的应用程序,则由用户自行选择。

+0

我不能更改每次发射我aplication任何设置?我认为存在一个方式来点它。 TKS –

使用意图过滤器中的“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 
}