Android-如何以编程方式检查Intent过滤器的类型?

时间:2013-07-04 12:03:11

标签: java android xml android-intent nfc

我正在创建一个包含两个活动(Activity1和Activity2)的Android应用程序,我需要以两种方式打开应用程序。

方式1:通过NFC卡

这样,我需要打开Activity1。即。如果我刷卡我需要打开Activity1。

方式2:按图标

这样,我需要打开Activity 2 .ie。,如果用户点击图标,则必须打开Activity2。

我的AndroidManifest.xml如下所示,

   ...............
   ...............
   ...............
   <activity 
        android:name=".Activity1"
       android:screenOrientation="portrait"
        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.nfc.action.NDEF_DISCOVERED" />
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="text/plain" />
        </intent-filter>





    </activity>
   .......................
   .......................
   .......................

在Activity1中,我只是尝试通过

获取类型
  if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) 


 {
 // Here I'm dealing with Activity1.
 }



 else
 {
 // Here I've set an Intent to go to Activity2.
 }

你可以看看我设置了Intent的else块去Activity2.But我需要直接进入Activity2而不进入Activity1。

如何实现?请帮忙

1 个答案:

答案 0 :(得分:1)

如果用户点击启动器中的图标,则选择要打开的活动由LAUNCHER类别决定。因此,如果您在Manifest中定义第二个活动并将这些行移至它,即将其从Activity1中删除并将其添加到Activity2,它应该有效:

<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.MAIN" />

然后,只要用户调用您的应用程序,就会触发Activity2,但Activity1仍会被其他意图触发。

<强>参考文献: