如何强制共享意图将活动添加到当前应用实例任务堆栈?

时间:2018-10-28 12:16:27

标签: android android-intent android-activity android-manifest android-task

我目前有一个应用程序,可以通过共享意图打开一个活动(不是主要活动)。这与清单中声明的​​intent过滤器一起使用时效果很好,唯一的问题是,它在单独的任务堆栈中打开了此活动(当用户单击概览系统按钮时,该活动显示了设备上正在运行的应用的两个实例...)

<!-- this activity enables the search dialog to initiate searches in itself. -->
    <activity
        android:name=".activities.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:theme="@style/AppTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <action android:name="android.intent.action.SEARCH" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <!-- enable the search dialog to send searches to it's own activity -->
        <meta-data android:name="android.app.searchable"
                    android:resource="@xml/searchable"
                    android:value=".MainActivity" />
    </activity>

    <!-- Media Player Activity -->
    <activity
        android:name=".activities.MediaPlayerActivity"
        android:launchMode="singleTop"
        android:hardwareAccelerated="true"
        android:configChanges="keyboardHidden|orientation|screenSize"
         >

        <intent-filter
            android:label="@string/app_name">
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:mimeType="text/*"
                android:host="@string/media_host_name"/>

        </intent-filter>

    </activity>

以上是清单文件的相关部分。我无法将MainActivity设置为MediaPlayerActivity的父级,因为其他活动可以打开MediaPlayerActivity,这会弄乱后退堆栈的顺序。

如何停止打开新任务的共享意图,而是将活动添加到当前应用程序堆栈的顶部?

0 个答案:

没有答案