web-dev-qa-db-fra.com

Android: Comment faire en sorte que l'appareil n'exécute qu'une seule application?

J'ai un projet client où je dois faire une seule tâche Android. Le client ne peut pas échapper à l'application que mon entreprise a développée. Le client ne peut pas non plus démarrer une autre application et notre application démarre au démarrage de l’appareil. Globalement, tout ce que le client peut faire avec l’appareil est exécuté par notre application.

Existe-t-il un autre moyen de faire cela que d'enraciner l'appareil, de désactiver tous les boutons du système et de faire de notre application le lanceur? J'ai quelque chose comme 400 appareils à cet effet, donc enraciner tous ceux-ci coûterait beaucoup de temps.

J'ai également lu le tutoriel de Google sur les appareils COSU mais je l'ai trouvé très déroutant https://developer.Android.com/work/cosu.html#testing-plan

L'épinglage d'écran d'Androïdes n'est pas suffisant car le client peut échapper à l'application. Certains peuvent suggérer d'utiliser une application de kiosque comme SureLock, mais l'objectif de mon entreprise est de trouver une solution claire pour cela sans utiliser d'applications tierces. Également exécuter notre application via une application kiosque n'est pas notre objectif.

J'ai trouvé des messages sur le débordement de pile avec une question similaire, mais pas la réponse que je cherche.

Si quelqu'un a quelques conseils pour cette question, je vous en serais très reconnaissant.

14
Nahka

Les appareils à usage unique construits au-dessus de Android peut être difficile à mettre en œuvre. Il existe plusieurs options différentes, mais chacune a des compromis.

Comme vous l'avez mentionné, l'enracinement des appareils vous fournira fonctionnellement ce que vous voulez - mais cela prendra du temps avec des centaines d'appareils à rooter, difficile à entretenir, et vous introduirez (potentiellement) des problèmes de sécurité sur vos appareils et votre application.

Une autre option consiste à utiliser le mode de tâche de verrouillage de Google pour les appareils COSU [1]. Le lien contient un joli graphique montrant les caractéristiques du mode de tâche de verrouillage:

  • 1 application épinglée sur l'écran d'accueil
  • seules les applications figurant sur la liste blanche du DPC (contrôleur de stratégie de périphérique) peuvent être verrouillées
  • Boutons Accueil et Récents masqués
  • quitter en appelant stopLockTask()

Il y a quelques inconvénients à utiliser la solution de Google pour cela. Tout d'abord, Google recommande de créer (et donc de maintenir) une application DPC entièrement distincte à exécuter en tant que propriétaire de l'appareil et de définir des politiques [2]. Vous serez également dépendant de Google Play pour gérer les mises à jour des applications et vous devrez avoir des comptes Play associés à chaque appareil qui "sont utilisés pour identifier un seul appareil qui n'est pas lié à un seul utilisateur pour des règles de distribution d'applications simplifiées par appareil dans les scénarios de type COSU "[3]. Pour obtenir automatiquement votre application DPC sur les appareils, votre "DPC doit être accessible au public sur Google Play, et l'utilisateur final peut installer le DPC à partir de l'assistant de configuration de l'appareil en entrant l'identifiant spécifique au DPC." [3] Vous devrez également téléchargez l'application utilisateur sur Google Play [4], ce qui peut être un problème pour certains qui ne veulent pas que leurs applications soient sur Play. Suivre cette voie vous offre les fonctionnalités dont vous avez besoin, mais peut être compliqué et vous lie étroitement à vous et à votre client avec les services Google/Play et leur flux de travail.

Vous pouvez également consulter les plates-formes de déploiement mobile d'entreprise comme Mason [5]. Dans votre cas, vous pouvez créer un Android OS Android en quelques minutes avec votre application verrouillée en mode kiosque (+ d'autres fonctionnalités comme désactiver la caméra/sms, supprimer des applications et masquer les paramètres, etc.) puis le déployer à distance sur tous vos appareils. Mason prend également en charge les mises à jour du système d'exploitation et des applications que vous contrôlez si vos besoins changent.

Si cela vous semble utile, n'hésitez pas à me contacter: trevor @ bymason.com

AVERTISSEMENT: je travaille pour Mason

8
Trevor Halvorson

Je suis allé au même problème avant. J'ai passé au moins 3 jours à faire des recherches. J'ai essayé de trouver de nombreuses solutions mais j'ai trouvé zéro.

    How I solve is

    1. Up To JellyBean 
     - Use System Alert Dialog (And make it transparent and small size like 2 * 2 And display in some corner(User can't see it)). User can't press home button If there is system Alert dialog

    2. After JellyBean, This method doesn't work. The user can press the home button even though there is System Alert Dialog.
    so what I did is, start the service on stop and start the same activity again and again(within sec). So user can't see any difference.Don't forget to make activity as single task so that even though you start same activity from service, again and again, new activity will not create (So Ugly way )

    - You can simple make screen full screen. make sure in kiosk mode try to check if the screen is in full-screen mode. if not make it full-screen mode(its not hard to do)

    - other way is to make launcher app but when ever you pressed home button it always asked to choose launcher app. if user mistakenly choose default/ other launcher app, this solution doesnt work

    Good luck
0
Ajay Shrestha