我正在创建具有两个Activity(Activity1和Activity2)的android应用程序,我需要通过两种方式打开该应用程序。

方式1:使用NFC卡

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

方式2:通过图标

这样,我需要打开“活动2”。即,如果用户单击图标,则必须打开“活动2”。

我的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.
 }


您可以在else块中设置我要进入Activity2的意图。但是我需要直接进入Activity2,而不必进入Activity1。

如何实现呢?请帮忙

最佳答案

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

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


然后,无论何时用户调用您的应用程序,都会触发Activity2,但其他意图仍会触发Activity1

参考文献:


Intents and Filters

关于java - Android-如何以编程方式检查 Intent 过滤器的类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17469815/

10-10 10:40