Comment activer le verrouillage des tâches dans les appareils de production Android 5.0


12

Cette question StackOverflow explique comment activer une application propriétaire d'appareil, et donc le mode kiosque, dans l'aperçu du développeur Android L. Étant donné que la méthode nécessite une version userdebug d'Android, l'enracinement de l'appareil et la copie d'un fichier XML dans le système de fichiers racine, elle ne semble pas adaptée au déploiement en masse d'un appareil Android à fonction unique au sein d'une entreprise.

Comment les applications de propriétaire d'appareil vont-elles être installées sur les appareils Android L de production?


avez-vous résolu le problème?
KOTIOS du


Merci @Spynet - cela semble être le résumé le plus complet de la solution.
Adrian Cox

1
jetez un œil ici pour un bon guide avec src: objectpartners.com/2014/11/04/…
Hayden Thring

Réponses:


14

( Modifier: mis à jour après quelques tests supplémentaires)

Consultez la dernière documentation .

Cette fonctionnalité semble être appelée épinglage d'écran maintenant, et l'application n'a pas besoin d'être le propriétaire de l'appareil. Si le propriétaire de l'appareil n'est pas défini, l'utilisateur sera invité à accepter. Mais il y a des problèmes avec cela pour l'utilisation du kiosque, mentionnés ci-dessous.

Il existe deux façons d'activer l'épinglage d'écran:

Manuellement: les utilisateurs peuvent activer l'épinglage d'écran dans Paramètres> Sécurité> Épinglage d'écran et sélectionner les tâches qu'ils souhaitent épingler en appuyant sur l'icône d'épingle verte dans l'écran récent. Par programme: pour activer l'épinglage d'écran par programme, appelez startLockTask () à partir de votre application. Si l'application demandeuse n'est pas propriétaire d'un appareil, l'utilisateur est invité à confirmer. Une application propriétaire d'appareil peut appeler la méthode setLockTaskPackages () pour permettre aux applications d'être épinglables sans l'étape de confirmation de l'utilisateur.

Si vous activez l'épinglage d'écran par programme (application non propriétaire de l'appareil) ou sur l'appareil à l'aide de la broche dans les recents, vous obtenez le comportement suivant:

Une boîte de dialogue apparaît, demandant à l'utilisateur s'il souhaite activer l'épinglage d'écran et s'il souhaite exiger un mot de passe pour quitter. S'ils appuient sur Oui, la barre d'état et les notifications disparaissent, les boutons Précédent, Accueil et Récents ne disparaissent PAS. Le fait d'appuyer sur la maison ou les récents fait apparaître un toast pour indiquer à l'utilisateur comment quitter l'épinglage d'écran.

L'utilisateur peut alors maintenir la touche enfoncée et recents pour quitter l'épinglage d'écran. Si l'utilisateur a choisi d'exiger un mot de passe, il sera renvoyé directement sur l'écran de verrouillage. Ce comportement signifie qu'il ne convient pas à une imo de kiosque. Comme il est trop facile pour les utilisateurs du kiosque de regarder l'écran de verrouillage.

Pour obtenir un mode de kiosque approprié, nous devons définir le propriétaire de l'appareil. La documentation de Google indique que vous devez le faire avec NFC:

Pour déployer et activer un propriétaire d'appareil, vous devez effectuer un transfert de données NFC d'une application de programmation vers l'appareil pendant que l'appareil est dans son état non provisionné.

L'utilisation de NFC pour ce faire semble un peu complexe (et si un appareil n'a pas de NFC?). Je n'ai pas encore enquêté sur cela, donc si quelqu'un peut fournir des informations sur la façon dont vous définissez le propriétaire de l'appareil par NFC? Ce qui devient maintenant le point principal de votre question. (c'est-à-dire définir le propriétaire de l'appareil sur un appareil non rooté)

Mais pour confirmer le comportement est comme prévu si vous rootez un appareil, vous pouvez définir le propriétaire de l'appareil selon les instructions précédentes de Google (en ajoutant un device_owner.xml) comme je l'ai mentionné ici

Vous pouvez maintenant verrouiller correctement l'application, aucune boîte de dialogue n'apparaît pour que l'utilisateur l'accepte, une fois activé, le bouton recents et home disparaît et l'utilisateur ne peut quitter l'application que si votre application se déverrouille. Un mode kiosque approprié. J'ai testé cela sur un Nexus 7 2013 avec la dernière version de Lollipop.

L'extrait suivant active le verrou:

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);

if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
    Log.d(TAG, "isDeviceOwnerApp: YES");
    String[] packages = {this.getPackageName()};
    mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
    Log.d(TAG, "isDeviceOwnerApp: NO");
}

if (mDPM.isLockTaskPermitted(this.getPackageName())) {
    Log.d(TAG, "isLockTaskPermitted: ALLOWED");
    startLockTask();
} else {
    Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}

Je pense que c'est la meilleure réponse possible disponible pour le moment. L'étape NFC reste un mystère, mais est une question beaucoup plus étroite.
Adrian Cox

J'ai essayé de faire fonctionner l'étape NFC mais sans succès, j'ai commencé une question à ce sujet ici . Il existe également une demande de fonctionnalité avec Google pour améliorer l'épinglage d'écran pour l'utilisation du kiosque ici
tagy22

1

Je ne peux pas commenter une réponse qui est un peu gênante mais complémentaire à la réponse de tagy22, vous pouvez utiliser dpmpour définir le propriétaire de l'appareil. Plus de détails ici .


1
dpmne ferait pas le travail si un compte (tel qu'un compte Google) est défini dans l'appareil.
Firelord

Est-ce que NFC dans ce cas? J'avais l'impression qu'un propriétaire d'appareil devait être défini avant la période d'ajout d'un compte.
Troy Patrick
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.