NDEF_DISCOVERED的多项活动

问题描述 投票:1回答:2

我在我的应用程序中有两个活动具有相同的意图过滤器“android.nfc.action.NDEF_DISCOVERED”,是否有任何方式告诉活动programaticaly我想开始一个特定的活动而不是选择在发现时开始的活动的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>
java android android-intent nfc ndef
2个回答
5
投票

创建第三个不可见的活动(比如,RedirectorActivity),没有任何布局和NoDisplay主题(android:theme="@android:style/Theme.NoDisplay"),并且从最近(android:excludeFromRecents="true")中排除。将你的intent-filter仅仅分配给那个单独的Activity(从其他人中删除过滤器!)并在所述onCreate()RedirectorActivity中添加所有必要的逻辑,用常规的Activity从中发起正确的startActivity()。最后用finish()杀死RedirectorActivity,你就完成了。


0
投票

如果要将当前正在运行的活动优先于另一个,则应使用NFC前台调度系统。见Advanced NFC: Using the NFC Foreground Dispatch System。 (另见question。)

此外,您可能需要考虑您的应用程序是否有意义使用不同类型的NDEF记录来启动您的两个活动。在这种情况下,发件人可以决定应该启动哪个活动。

© www.soinside.com 2019 - 2024. All rights reserved.