117 votes

Mode kiosque sur Android

Je suis en train d'évaluer si et comment une application d'entreprise CF .NET peut être portée pour fonctionner sur des appareils Android. L'application sur les téléphones Windows Mobile est exécutée en mode kiosque où l'application démarre automatiquement en mode plein écran après le démarrage et où les utilisateurs ne peuvent pas accéder accidentellement ou volontairement à d'autres parties du téléphone.

Est-il possible sur Android de faire démarrer automatiquement une seule application après le démarrage et d'empêcher les utilisateurs d'accéder accidentellement (ou volontairement) à d'autres parties de l'appareil Android ?

0 votes

Avez-vous résolu votre problème ?

3 votes

Oui, c'est possible. J'ai créé un (très) long article de blog à ce sujet : andreas-schrade.de/2015/02/16/…

0 votes

J'ai également créé un article de blog à ce sujet (en partie) en utilisant Lollipop - il exclut cependant la partie du récepteur de démarrage : sureshjoshi.com/mobile/android-kiosk-mode-without-root

29voto

Valentin Points 1004

Vous pouvez démarrer des applications automatiquement au démarrage en écoutant l'intention android.intent.action.BOOT_COMPLETED dans un BroadcastReceiver et démarrer votre activité à partir de là. Dans l'activité, vous pouvez vous enregistrer en tant que nouveau domicile par défaut[1] et gérer les touches.

Je pense qu'il y a des cas que vous ne pouvez pas gérer sans modifier le framework (comme le maintien enfoncé sur Accueil pour afficher les applications actuellement actives) - je pourrais aussi me tromper cependant.

Mais pour un prototype, cela pourrait suffire.

Amusez-vous à bricoler!

[1]:

1 votes

Tu dois également remplacer le onbackpressed de la première activité sinon quand tu appuies sur le bouton retour, tu retournes au lanceur

0 votes

Comment désactiver les boîtes de dialogue système et les barres de notification à l'aide du code

1 votes

@GnanamR : vérifiez ma réponse à : stackoverflow.com/questions/11958034/hide-tablet-system-bar

17voto

rbot Points 175

Vous pourriez personnaliser ceci (désactiver l'accès au menu, limiter l'ajout d'applications, etc) pour activer le kiosque. http://code.google.com/p/android-launcher-plus/

7 votes

Puis-je savoir pourquoi cela a été downvoté ? J'ai écrit mon application de kiosque Android, actuellement déployée, en éditant et en développant par-dessus le lanceur Android.

1 votes

Dans ce cas, je vote pour votre réponse et votre commentaire ;-)

0 votes

@rbot comment avez-vous fait ça? J'ai essayé de construire une application de kiosque depuis des lustres, et j'ai presque résolu tout sauf m'assurer que le plateau de notifications ne s'ouvre pas.

17voto

Niek Haarman Points 13931

Dans la nouvelle version d'Android L Preview, Google a annoncé le verrouillage de tâches, qui fait exactement cela. Il semble cependant qu'il ait besoin de root.

La version de développement L introduit une nouvelle API de verrouillage de tâches qui vous permet de restreindre temporairement les utilisateurs à quitter votre application ou d'être interrompus par des notifications. Cela pourrait être utilisé, par exemple, si vous développez une application éducative pour répondre aux exigences d'évaluation à haut risque sur Android. Une fois que votre application active ce mode, les utilisateurs ne pourront pas voir les notifications, accéder à d'autres applications ou revenir à l'écran d'accueil, tant que votre application n'a pas quitté le mode.

Pour éviter une utilisation non autorisée, seules les applications autorisées peuvent activer le verrouillage de tâches. De plus, l'autorisation de verrouillage de tâches doit être accordée par une application propriétaire spécialement configurée, via la méthode android.app.admin.DevicePolicyManager.setLockTaskComponents().

Pour configurer un propriétaire de périphérique, suivez ces étapes :

  • Associez un appareil exécutant une version Android userdebug à votre machine de développement.
  • Installez votre application propriétaire.
  • Créez un fichier device_owner.xml et enregistrez-le dans le répertoire /data/system sur l'appareil.
$ adb root
$ adb shell stop
$ rm /tmp/device_owner.xml
$ echo "" >> /tmp/device_owner.xml
$ echo "&device-owner package=\"\" name=\"*\" />" >> /tmp/device_owner.xml
$ adb push /tmp/device_owner.xml /data/system/device_owner.xml
$ adb reboot

Avant d'utiliser l'API de verrouillage de tâches dans votre application, vérifiez que votre activité est autorisée en appelant DevicePolicyManager.isLockTaskPermitted().

Pour activer le verrouillage de tâches, appelez android.app.Activity.startLockTask() depuis votre activité autorisée.

Lorsque le verrouillage de tâches est actif, les comportements suivants prennent effet :

  • La barre d'état est vide, et les notifications utilisateur et les informations d'état sont cachées.
  • Les boutons Accueil et Applications récentes sont cachés.
  • D'autres applications ne peuvent pas lancer de nouvelles activités.
  • L'application actuelle peut démarrer de nouvelles activités, à condition que cela ne crée pas de nouvelles tâches.
  • L'utilisateur reste verrouillé sur votre application jusqu'à ce qu'une activité autorisée appelle Activity.stopLockTask().

3 votes

developer.android.com/guide/topics/admin/device-admin.html - sur le déploiement d'une application d'administration d'appareil.

3 votes

Voici mon article sur les Task Locks avec l'algorithme de configuration complet pvolan.blogspot.ru/2017/01/android-50-kiosk-mode-aka-super.html

9voto

matt_lethargic Points 796

Après avoir cherché pendant un certain temps, j'ai trouvé une bonne solution. Cela ne fonctionne que sur les appareils rootés, mais je suppose que si c'est juste pour cette application, rooter ne devrait pas poser de problème.

Jetez également un œil à http://thebitplague.wordpress.com/2013/04/05/kiosk-mode-on-the-nexus-7/ pour une autre solution

2voto

Big Rich Points 1833

Ont trouvé une autre technique possible dans ce message de forum. Citant ce message :

http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/10839-android-kiosk-mode-tutorial.html

En utilisant les méthodes suivantes, vous pouvez créer une application qui empêchera les utilisateurs "normaux" de jouer avec autre chose que votre application.

L'application est composée de deux modules. L'activité principale et un service. Le service est configuré pour démarrer au démarrage. Lorsque le service est lancé, il vérifie si l'activité est en cours d'exécution ou non. S'il ne l'est pas, il utilise un minuteur pour démarrer l'activité principale.

Lorsque l'activité est en pause, elle planifie le démarrage du service dans une seconde : Code :

Sub Activity_Pause (UserClosed As Boolean)
    If kiosk Then StartServiceAt(KioskService, DateTime.Now + 1 * DateTime.TicksPerSecond, false)    

Si l'utilisateur appuie sur l'écran d'accueil, l'écran d'accueil apparaîtra pendant quelques secondes. Cependant, votre application reviendra à l'avant-plan après quelques secondes et l'utilisateur ne pourra pas interagir avec d'autres applications ou modifier les paramètres.

Le service est configuré pour être un service en premier plan. Cela empêche Android de tuer notre service. Appuyez sur le bouton Arrêter pour désactiver le mode kiosque.

Il semble qu'un fichier ZIP d'exemple de code en mode kiosque soit disponible en téléchargement, aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X