代码之家  ›  专栏  ›  技术社区  ›  Andrew

从“图片窗口中的图片”中的通知打开启动意图

  •  2
  • Andrew  · 技术社区  · 7 年前

    Android picture-in-picture documentation . 也就是说,我的PiP活动是有标记的 android:launchMode="singleTask" , android:resizeableActivity="true" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" 在舱单上。

    当我的应用程序收到推送时,我会创建一个 PendingIntent Intent 对于 MyActivity (不同 Activity 比皮普 活动 )。但是,当我点击通知和 意图 使用, 我的活动

    android:launchMode=“singleTask” 我的活动 在舱单上。我还尝试以编程方式将该标志添加到 意图 在使用它之前 PendingIntent.getActivity() . 这似乎无法解决问题。

    3 回复  |  直到 7 年前
        1
  •  10
  •   aminography    7 年前

    为了解决这个问题,我们应该设置一个独特的 taskAffinity 为了这个点子 Activity 在舱单上。它指示活动所属的任务。为它设置一个唯一的值将分离PiP的任务 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
  •  1
  •   aminography    7 年前

    google sample codes ,不需要设置PIP的启动模式 Activity 单一任务。但是,为了禁用PIP状态,您需要将启动器任务移动到不处于PIP模式的前端。

    onCreate() 目标方法 这是从通知中调用的,您可以实现这一点。

    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;
            }
        }
    }
    

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

    enter image description here enter image description here

        3
  •  0
  •   Gurgen Arustamyan    7 年前

    android:supportsPictureInPicture="false" 到清单中的MyActivity。它会解决你的问题

        4
  •  0
  •   Milan Pansuriya    6 年前

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