仅当应用程序未在后台运行时,NFC意图启动应用程序才会启动启动器

时间:2016-06-07 14:00:33

标签: android android-intent nfc android-pendingintent

我试图从NFC应用选择器对话框打开我的应用程序,该对话框在系统检测到NFC标签时出现。我的应用程序出现在选择器对话框中。

案例1:

当应用程序在后台运行时。 在NFC标签检测中,将背景活动(任务中的顶级活动)带到前台。

问题

我需要指定哪个活动处理清单文件中系统的nfc意图。因此,当用户从app chooser系统中选择我的应用程序时,启动指定的活动。而不是将背景活动带到前线。

案例2:

当应用程序未运行午餐应用程序时,启动器活动。

问题

为了实现这一点,我需要将启动器屏幕指定为清单文件中的NFC意图处理程序。通过这样做,我的应用程序将在案例1中失败!

AndoridManifest.xml 代码段

         <activity android:name=".activityName" ...>
                <intent-filter>
                    <action android:name="android.nfc.action.TECH_DISCOVERED"/>
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
                <meta-data
                    android:name="android.nfc.action.TECH_DISCOVERED"
                    android:category="android.intent.category.DEFAULT"
                    android:resource="@xml/nfc_tech_filter" />
         </activity>

满足这两种情况的解决方案是什么? 我试过ActivityManager,但没有得到解决方案。

1 个答案:

答案 0 :(得分:0)

我通过在启动器活动onCreate()中添加以下代码解决了我的问题。我为发射器活动保持了意图过滤器和元数据相同。这里的技巧是检查应用程序任务是否已经运行到系统中。

if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            finish();
            return;
}

上面的代码将检查应用程序任务是否已经运行。如果它的运行然后启动器活动将关闭他自己并将最重要的任务活动带到前面。

<强>参考:

https://stackoverflow.com/a/21022876/2465752 https://developer.android.com/reference/android/R.styleable.html#AndroidManifestActivity_launchMode