5

我遵循了Android 画中画文档。也就是说,我的画中画活动在清单中被标记为android:launchMode="singleTask"android:resizeableActivity="true"、 。android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"

画中画似乎效果很好。但是,我注意到我遇到不良行为的情况。

当我的应用程序收到推送时,我创建了PendingIntent一个Intentfor MyActivity(不同于ActivityPiP Activity)。但是,当我点击通知并Intent使用它时,MyActivity它会在 PiP 窗口中启动!

我试过android:launchMode="singleTask"MyActivity清单中添加。我还尝试以编程方式将该标志添加IntentPendingIntent.getActivity(). 这似乎无法解决问题。

谁能告诉我如何防止这种情况?

4

4 回答 4

11

为了解决这个问题,我们应该在 manifest 中taskAffinity为 PiP设置一个唯一的。Activity它表示该活动所属的任务。为其设置一个唯一值将 PiP 的任务Activity与您的MainActivity.

<activity
    android:name=".VideoActivity"
    android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
    android:taskAffinity=".VideoActivity"
    android:supportsPictureInPicture="true" />


----------------------之前---------------------------- --------------------之后------------------------

在此处输入图像描述 在此处输入图像描述

于 2019-01-08T06:07:48.137 回答
1

首先,正如你在google示例代码中看到的那样,它不需要制作PIP ActivitysingleTask的启动模式。但是,您需要将启动器任务移到不在 PIP 模式下的前面,以禁用 PIP 状态。

onCreate()通过在从通知调用的目标方法中调用波纹管片段Activity,您可以实现这一点。

public static void moveLauncherTaskToFront(Context context) {
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    assert activityManager != null;
    final List<ActivityManager.AppTask> appTasks = activityManager.getAppTasks();
    for (ActivityManager.AppTask task : appTasks) {
        final Intent baseIntent = task.getTaskInfo().baseIntent;
        final Set<String> categories = baseIntent.getCategories();
        if (categories != null && categories.contains(Intent.CATEGORY_LAUNCHER)) {
            task.moveToFront();
            return;
        }
    }
}

----------------------之前---------------------------- --------------------之后------------------------

在此处输入图像描述 在此处输入图像描述

于 2019-01-07T18:56:58.543 回答
0

添加android:supportsPictureInPicture="false"到清单中的 MyActivity。它应该可以解决您的问题

于 2019-01-03T20:39:47.600 回答
0

我也遇到过这个问题,你可以尝试"android:excludeFromRecents="true"在你的 MyPipActivity 清单中添加

于 2020-03-11T11:57:54.193 回答