FAQ n°22657, publiée le 14/01/2022
Comment autoriser le lancement d'une autre application avec LanceAppli à partir d'une application sous Android 11 ?
A partir de Android 11 (API Level 30), par défaut une application ne peut plus en lancer une autre.
 
Par exemple le lancement de Gmail avec  
LanceAppli("com.google.android.gm"va échouer avec la réponse :

Le lancement de l'exécutable "com.google.android.gm" a échoué pour la raison suivante :
L'application <com.google.android.gm> n'existe pas ou n'a pas été trouvée.

 
Deux solutions permettent d'autoriser le lancement :

  • Solution 1 : ajouter la permission QUERY_ALL_PACKAGES dans l'assistant de génération de l'application :



    La limitation est supprimée, mais la publication dans le Play Store va nécessiter des justifications supplémentaires auprès de Google.
    Cette solution est donc généralement retenue uniquement dans le cadre d'un déploiement via un Store Privé (MDM/WDBaaS).

  • Solution 2 : ajouter dans le manifeste de l'application le package de l'application à lancer :
    • lancer l'assistant de génération de l'application Android,
    • à l'étape "Configuration",
    • clic sur "Configuration avancée",
    • clic sur "Editer le manifeste",
    • sélectionner le nœud racine "manifest",
    • clic sur "Ajouter un nœud fils", saisir le nom "queries",
    • sélectionner le nouveau nœud "queries",
    • clic sur "Ajouter un nœud fils", saisir le nom "package",
    • sélectionner le nouveau nœud "package",
    • clic sur "Ajouter un attribut",
    • donner le nom "android:name" et le package à lancer en valeur : com.google.android.gm
    • valider par OK et terminer la génération.