从SEND Intent启动时,Android应用在“最近的应用”列表中的行为有所不同

时间:2013-02-07 02:28:17

标签: android android-intent

我有一个简单的Android应用程序,可以处理一些文本数据。该应用程序有两种调用方式:1)从启动器启动应用程序并手动输入文本数据,或2)使用SEND意图与其共享一些文本。

通过启动器启动时,一切都像我期望的那样。通过“共享”功能启动并随后使用应用程序切换器/最近的应用程序按钮时,应用程序将显示为“Android系统”,如果我切换它,它将消失。我希望它像任何其他应用程序一样出现在该列表中,并在切换时保留。所以问题是:为什么我的应用程序在从不同的意图启动时表现不同?我确信有一些基本的东西,我不了解意图,活动和任务,但我无法确定在哪里看。

这是清单的相关部分。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.stub2.Main"
        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.intent.action.SEND" />
          <category android:name="android.intent.category.DEFAULT" />
          <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>
</application>

1 个答案:

答案 0 :(得分:1)

例如,用户使用Main调用您的活动ACTION_SEND以及一些文字abc。另一次,他用文字Main来调用zzz。然后,您将在最近的列表中有2个Main实例,具有不同的意图。

<小时/> 修改

您可以使用ACTION_SEND之类的“适配器”活动注册AdapterActivity,然后将文字转发至Main。通过这种方式,如果用户从启动器启动,您的应用(Main活动)将仅列在最近的应用中。

<activity
    android:name="AdapterActivity"
    android:excludeFromRecents="true" />

还有更多活动代码here