Java 发现多个具有NDEFèU的活动

Java 发现多个具有NDEFèU的活动,java,android,android-intent,nfc,ndef,Java,Android,Android Intent,Nfc,Ndef,我的应用程序中有两个活动具有相同的目的过滤器“android.nfc.action.NDEF_DISCOVERED”,是否有任何方法可以通过编程告诉该活动我想要启动一个特定的活动,而不是在发现NDEF时选择启动哪个活动?更清楚地说,一个设备正在运行Activity1,第二个设备正在运行Activity2,每当我从一个设备或另一个设备发送信息时,设备都会询问我要启动哪个活动,因为它们都具有相同的意图过滤器 这是我的舱单: <activity android:label

我的应用程序中有两个活动具有相同的目的过滤器“android.nfc.action.NDEF_DISCOVERED”,是否有任何方法可以通过编程告诉该活动我想要启动一个特定的活动,而不是在发现NDEF时选择启动哪个活动?更清楚地说,一个设备正在运行Activity1,第二个设备正在运行Activity2,每当我从一个设备或另一个设备发送信息时,设备都会询问我要启动哪个活动,因为它们都具有相同的意图过滤器

这是我的舱单:

<activity
            android:label="@string/app_name"
            android:name=".Activity1"
            android:screenOrientation="portrait"
            >
            <intent-filter >
                <action android:name="com.example.activity1" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
             <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />

                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="text/plain" />
            </intent-filter>
        </activity>
        <activity
            android:label="@string/app_name"
            android:name=".Activity2"
            android:screenOrientation="portrait" 
            >
            <intent-filter >
                <action android:name="com.example.activity2" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
             <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />

                <category android:name="android.intent.category.DEFAULT" />

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


创建第三个不可见的活动(例如,
重定向或活动
),无任何布局,具有
NoDisplay
主题(
android:theme=“@android:style/theme.NoDisplay”
),并从recents中排除(
android:excludeFromRecents=“true”
)。将您的
intent筛选器
仅分配给该单个活动(从其他活动中删除筛选器!),并在所述
重定向活动的
onCreate()
中添加所有必要的逻辑,以便以常规
startActivity()从中启动正确的
活动
。最后用
finish()
终止重定向活动,您就完成了。

如果您想让当前运行的活动优先于其他活动,您应该使用NFC前台调度系统。看见(另请参见此。)

也可以考虑应用程序使用不同类型的NDEF记录来启动两个活动是否有意义。在这种情况下,发送方可以决定应该启动哪个活动