从画中画窗口中的通知打开启动Intent

时间:2019-01-03 19:21:40

标签: android android-intent android-pendingintent android-picture-in-picture

我遵循了Android picture-in-picture documentation。也就是说,我的PiP活动在清单中标记为android:launchMode="singleTask"android:resizeableActivity="true"android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"

画中画效果很好。但是,我注意到我遇到了不良行为。

当我的应用收到推送时,我创建了一个PendingIntentIntent的{​​{1}}(与PiP MyActivity不同的Activity)。但是,当我点击通知并使用Activity时,Intent会在画中画窗口中启动!

我尝试在清单中将MyActivity添加到android:launchMode="singleTask"中。我还尝试过以编程方式将该标志添加到MyActivity,然后将其与Intent一起使用。这似乎无法解决问题。

有人可以告诉我如何预防吗?

4 个答案:

答案 0 :(得分:1)

首先,如您在google sample codes中所见,它不需要使PIP Activity的启动模式成为singleTask。但是,您需要将启动器任务移到非PIP模式的最前面,以禁用PIP状态。

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

Activity

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

enter image description here enter image description here

答案 1 :(得分:1)

要解决此问题,我们应该在清单中为PiP taskAffinity设置唯一的Activity。它指示活动所属的任务。为其设置一个唯一值会将画中画Activity与您的MainActivity分开。

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


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

enter image description here enter image description here

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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