如果已经运行,则阻止启动主要活动

时间:2013-03-04 16:19:26

标签: android android-intent android-activity intentfilter main-activity

我有一个通过intent-filter操作启动的应用程序。问题是,每次事件/操作发生时,Android都会显示一个对话框,要求即使它已经启动也要启动应用程序。

我希望行为如下:

  • 如果应用未打开,用户会要求启动该应用。
  • 如果应用程序在前台运行,则不会显示对话框。

有没有办法实现这两个目标?我的目标是Android 4.0。

修改

这是我的意图过滤器:

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
        </intent-filter>

       <intent-filter>
            <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
        </intent-filter>

       <meta-data
            android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
            android:resource="@xml/device_filter" />

2 个答案:

答案 0 :(得分:9)

您需要将Activity的{​​{1}}设置为launchMode。您可以通过在Android Manifest中添加activity属性来执行此操作:

singleTask

有关详细信息,请参阅documentation

答案 1 :(得分:0)

在要求用户启动应用程序时使用标志。首次启用时设置标志,每次检查是否勾选此标志。例如if (flag == 1) askusertostart() else continue;,如果您明白这一点?