A partir de la version 10 de Android, Google supprime la possibilité pour une application en arrière plan d'ouvrir une fenêtre (Activity) . C'est un changement très important qui concerne toutes les applications Android, donc également les applications générées avec WINDEV Mobile.

 

Une application fonctionnelle avec toutes les versions en Android, aura donc les limitations suivantes sur un appareil installé ou mis à jour avec Android 10 :

  • lorsque l'application est en arrière plan, l'ouverture d'une fenêtre (OuvreFenêtreMobile, Ouvre, OuvreFille, Info, Erreur, Dialogue...) n'est plus autorisée,
  • l'exécution d'une fonction WLangage qui conduit à l'ouverture d'une fenêtre n'est plus autorisée (SMSLanceAppli, AlbumSélecteur...),
  • le framework Android de l'application sera également bloqué pour ouvrir une fenêtre en arrière-plan, ce qui est nécessaire à la gestion des fonctionnalités suivantes :

Ces limitations s'appliquent à toutes les applications générées avec WINDEV Mobile 25 "Update 2", et les versions antérieures.

 

A partir de la version "Update 3" de WINDEV Mobile 25, le framework Android a été modifié afin de tenir compte de cette exigence de Google. Ces modifications ne sont pas de simples "corrections" de fonctions, mais correspondent à une réécriture complète de nombreux mécanismes internes du framework Android. Ces modifications ne peuvent donc s'intégrer qu'à une "update" complète de WINDEV Mobile. Elles ne peuventt pas être proposées sous la forme d'une simple mise à jour intermédiaire pour update antérieure, ou une version précédente de WINDEV Mobile.

 

Donc à partir de la version "Update 3" de WINDEV Mobile 25, les notifications push, le suivi de position, la détection beacon sont rétablies sous Android 10. De plus le mécanisme de sécurité du WLangage est complété, afin de déclencher une erreur fatale si une fonction provoquant l'ouverture d'une fenêtre est appelée lorsque l'application est en arrière-plan. La liste complète des fonctions concernées est à la fin du billet afin de faciliter la lecture.

 

Afin de s'assurer du bon fonctionnement d'une application sous Android 10, il faut donc :

  • utiliser la version "Update 3" de WINDEV Mobile 25 pour sa génération. Sa disponibilité dans l'espace téléchargement est imminente.

  • vérifier tous les traitements pouvant être lancés depuis l'application en arrière-plan : ils ne doivent pas déboucher sur l'ouverture d'une fenêtre. Les possibilités suivantes sont utiles :
    • fonction EnModeArrièrePlan : permet de savoir si le traitement en cours s'exécute en arrière-plan ou non,
    • si une application a besoin d'interagir avec l'utilisateur alors qu'elle se trouve en arrière-plan, la solution préconisée est d'afficher une notification. Lors du clic sur la notification, l'application sera remise au premier plan et sera donc autorisée à ouvrir une fenêtre depuis la procédure appelée grâce à la propriété ActionClic de la notification (la notification doit avoir la propriété ..ActiveApplication à vrai).
    • fonction ExeInfo et son paramètre exeLancement, qui vaudra exeDémarrage si l'application est lancée par le démarrage de l'appareil.
  • en phase de mise au point de l'application sur un téléphone ou une tablette Android, utiliser le log Android afin de cerner l'origine d'un éventuel blocage durant l'exécution en arrière-plan. En effet, l'ouverture de fenêtre n'étant pas autorisée depuis l'arrière-plan, le mécanisme de sécurité du WLangage ne peut pas remonter d'information. Les erreurs sont donc consignées dans le log Android.

Exception pour confirmer la règle : les applications "device owner" ne sont pas concernées. Dans ce mode spécifique l'ouverture de fenêtre reste autorisée (EnModeDeviceOwner = Vrai).


Liste des fonctions qui ne doivent pas être appelées si l'application est en arrière-plan :

  • Ouvre, OuvreSoeur, OuvreFille,
  • Info, InfoAsynchrone, InfoConstruit, Erreur, ErreurAsynchrone, ErreurConstruit, Avertissement, Confirmer, OkAnnuler, OuiNon, Dialogue, Saisie,
  • AlbumSélecteur,
  • ContactEdite,ContactAffiche, ContactSélectionne, ContactCréé,
  • KiosqueActive, KiosqueDésactive,
  • LanceAppli, LanceAppliAssociée,
  • fbOuvreSession,
  • VérifieIdentitéUtilisateur,
  • InAppAchèteProduit,
  • VidéoLanceAppli,
  • CBCapture,
  • btChangeVisibilité,
  • smsLanceAppli,
  • EmailLanceAppli, EmailOuvreMessagerie,
  • AuthIdentifie,
  • gpwAuthLogin,
  • NFCLitTag, NFCEcritTag, NFCEnvoieTag,
  • DateSélecteur, HeureSélecteur,
  • UriSélecteur,
  • ReconnaissanceVocaleDéclenche,
  • SynthèseVocaleInitalise, SynthèseVocaleLitTexte, SynthèseVocaleLitFichier,
  • LancePartage,
  • AppliOuvreFiche,
  • géoLanceAppli,
  • gglImprimeDocument,
  • RendezVousCréé, RendezVousAffiche,
  • telDialerCompose,
  • telDialerAfficher.

< Retour

1 commentaire

info infoglobal
19/10/2021 - 09:06 - Répondre
Great information. Lucky me I came across your website by chance (stumbleupon). I've book-marked it for later! Angular training in Bangalore Angular 9 training in Bangalore AngularJS Training in Bangalore AngularJS Online Training React JS Training in Bangalore ReactJS Training in Bangalore ReactJS Training in Bangalore React JS Course in Bangalore UI Development training in Bangalore UI Development Online Training UI Developer Course training in Bangalore Web Designing training in Bangalore Web Development training in Bangalore Web Designing Course in Bangalore

Publier un commentaire : 
Votre adresse email ne sera pas publiée