4 Réponses :


0
votes

ajoutez android:supportsPictureInPicture="false" à MyActivity dans le fichier manifeste. Cela devrait résoudre votre problème


1 commentaires

Merci pour la réponse. J'ai ajouté android: supportsPictureInPicture = "false" à toutes les activités (sauf mon activité PiP) et le problème persiste.



1
votes

Tout d'abord, comme vous pouvez le voir dans exemples de codes google , il n'est pas nécessaire pour rendre le mode de lancement de PIP Activity singleTask. Cependant, vous devez déplacer la tâche du lanceur vers l'avant qui n'est pas en mode PIP, afin de désactiver l'état PIP.

En appelant l'extrait de code ci-dessous dans la méthode onCreate () de la cible Activité qui est appelée à partir des notifications, vous pouvez y parvenir.

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

------------------ ---- Avant -------------------------------------- -------- Après ------------------------

entrez description de l'image ici  entrez la description de l'image ici


1 commentaires

Si je comprends bien, il s'agit de prendre l'activité PiP et de la «maximiser». Ma situation implique le lancement d'une activité qui n'est PAS l'activité PiP. Donc, si MyPipActivity s'exécute dans une fenêtre PiP et que j'ai un PendingIntent pour une notification pour lancer MainActivity , je veux MainActivity pour lancer le plein écran (idéalement avec la fenêtre PiP exécutant MyPipActivity toujours active) dans sa propre tâche. En ce moment, cliquer sur la notification lance MainActivity dans la fenêtre PiP.



7
votes

Pour résoudre ce problème, nous devons définir une taskAffinity unique pour Activity PiP dans le manifeste. Il indique la tâche à laquelle appartient l'activité. La définition d'une valeur unique pour cela sépare la tâche de Activity PiP de votre MainActivity.

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


---------------------- Avant -------------------- -------------------------- Après ---------------- --------

 entrez la description de l'image ici  entrez la description de l'image ici


5 commentaires

Ça marche! Cependant, cela présente un nouveau problème. Lors du lancement de MyPipActivity , l'animation est complètement différente et indésirable.


Ce problème se produit pour toutes les activités de tâche non root. Également lorsque l'activité a défini singleInstance . Cependant, je n'ai pas trouvé de solution pour cela jusqu'à présent. Il est peut-être préférable de remplacer toutes les transitions d’activité nous-mêmes en utilisant quelque chose comme ça .


Merci pour votre réponse. J'ai exploré cette solution précédemment. Mon problème est que je ne peux pas référencer directement les animations système (par exemple: android.R.anim.xyz). Je pourrais copier le contenu de ces fichiers d'animation Android et utiliser mes propres animations personnalisées, mais cela s'arrête dès que certains OEM de l'appareil modifient les animations de commutation d'activité (ce que beaucoup semblent faire).


Tu es le bienvenu mec. Je serai très heureux si je sais comment vous résolvez ce problème. J'ai eu le même problème avec le mode singleInstance.


Si je trouve une solution, je vous le ferai savoir. Merci pour l'aide!



0
votes

J'ai également rencontré ce problème et vous pouvez essayer d'ajouter "android: excludeFromRecents =" true " dans votre manifeste MyPipActivity


0 commentaires