Abandon de l'outil d'administration des appareils. À partir d'Android 9 (niveau d'API 28), certaines règles d'administration seront marquées comme obsolètes lorsqu'elles seront appelées par un administrateur de l'appareil. Nous vous recommandons de commencer à vous préparer dès maintenant à ce changement. Pour en savoir plus et découvrir les options de migration, consultez Arrêt de l'administrateur de l'appareil.
Android est compatible avec les applications d'entreprise grâce à l'API Android Device Administration. L'API Device Administration fournit des fonctionnalités d'administration des appareils au niveau du système. Ces API vous permettent de créer des applications axées sur la sécurité qui sont utiles dans les environnements d'entreprise, dans lesquels les professionnels de l'informatique ont besoin d'un contrôle étendu sur les appareils des employés. Par exemple, l'application de messagerie Android intégrée a utilisé ces API pour améliorer la compatibilité avec Exchange. Grâce à l'application de messagerie, les administrateurs Exchange peuvent appliquer des règles relatives aux mots de passe (y compris des mots de passe alphanumériques ou des codes numériques) sur tous les appareils. Les administrateurs peuvent également effacer à distance (c'est-à-dire rétablir la configuration d'usine) les téléphones portables perdus ou volés. Les utilisateurs d'Exchange peuvent synchroniser leurs données de messagerie et d'agenda.
Ce document s'adresse aux développeurs qui souhaitent créer des solutions d'entreprise pour les appareils Android. Il aborde les différentes fonctionnalités fournies par l'API Device Administration pour renforcer la sécurité des appareils Android des employés.
Remarque : Pour en savoir plus sur la création d'un contrôleur de règles professionnelles pour les déploiements Android for Work, consultez Créer un contrôleur de règles relatives aux appareils.
Mode propriétaire de l'appareil sans écran
Android 14 (niveau d'API 34) introduit le mode utilisateur du système headless (appareils dans lesquels UserManager.isHeadlessSystemUserMode
renvoie true
). En mode utilisateur du système headless, l'utilisateur du système est un utilisateur en arrière-plan et s'appuie sur des utilisateurs de premier plan supplémentaires pour l'interaction avec l'utilisateur final. Android 14 introduit également un mode affilié sans interface pour le propriétaire de l'appareil, qui ajoute un propriétaire de profil à tous les utilisateurs affiliés autres que l'utilisateur système sur lequel le propriétaire de l'appareil est défini.
Dans les appareils configurés avec un utilisateur système sans interface graphique (où l'utilisateur système s'exécute en arrière-plan), seules les règles relatives aux appareils de portée globale (règles applicables à tous les utilisateurs) sont appliquées à l'utilisateur ou aux utilisateurs au premier plan. Pour en savoir plus, consultez addUserRestriction
.
Les fabricants d'appareils Android peuvent se référer aux conseils publiés sur source.android.com.
Présentation de l'API d'administration des appareils
Voici des exemples de types d'applications qui peuvent utiliser l'API Device Administration :
- Clients de messagerie
- Applications de sécurité qui effacent les données à distance.
- les services et applications de gestion des appareils.
Fonctionnement
Vous utilisez l'API Device Administration pour écrire des applications d'administration des appareils que les utilisateurs installent sur leurs appareils. L'application d'administration des appareils applique les règles souhaitées. Voici le principe de fonctionnement :
- Un administrateur système écrit une application d'administration d'appareil qui applique des règles de sécurité pour les appareils à distance/locaux. Ces règles peuvent être codées en dur dans l'application ou l'application peut les récupérer de manière dynamique à partir d'un serveur tiers.
- L'application est installée sur les appareils des utilisateurs. Android ne dispose pas actuellement de solution de provisionnement automatique. Voici quelques exemples de méthodes qu'un administrateur système peut utiliser pour distribuer l'application aux utilisateurs :
- Google Play.
- Autoriser l'installation depuis un autre magasin
- Distribuer l'application par d'autres moyens, comme par e-mail ou sur des sites Web
- Le système invite l'utilisateur à activer l'application d'administration de l'appareil. La façon dont cela se produit et le moment où cela se produit dépendent de la façon dont l'application est implémentée.
- Une fois que les utilisateurs ont activé l'application d'administration de l'appareil, ils sont soumis à ses règles. Le respect de ces règles confère généralement des avantages, comme l'accès à des systèmes et des données sensibles.
Si les utilisateurs n'activent pas l'application d'administration de l'appareil, elle reste sur l'appareil, mais à l'état inactif. Les utilisateurs ne seront pas soumis à ses règles et ne bénéficieront pas des avantages de l'application (par exemple, ils ne pourront peut-être pas synchroniser les données).
Si un utilisateur ne respecte pas les règles (par exemple, s'il définit un mot de passe qui ne respecte pas les consignes), il appartient à l'application de décider comment gérer ce problème. Toutefois, cela empêchera généralement l'utilisateur de synchroniser les données.
Si un appareil tente de se connecter à un serveur qui nécessite des règles non compatibles avec l'API Device Administration, la connexion ne sera pas autorisée. L'API Device Administration ne permet pas actuellement le provisionnement partiel. En d'autres termes, si un appareil (par exemple, un ancien appareil) n'est pas compatible avec toutes les règles indiquées, il n'est pas possible de l'autoriser à se connecter.
Si un appareil contient plusieurs applications d'administration activées, la règle la plus stricte est appliquée. Il n'existe aucun moyen de cibler une application d'administration spécifique.
Pour désinstaller une application d'administration de l'appareil existante, les utilisateurs doivent d'abord annuler l'enregistrement de l'application en tant qu'administrateur.
Règles
Dans un environnement d'entreprise, les appareils des employés doivent souvent respecter un ensemble strict de règles régissant leur utilisation. L'API Device Administration est compatible avec les règles listées dans le tableau 1. Notez que l'API Device Administration n'est actuellement compatible qu'avec les mots de passe pour le verrouillage de l'écran :
Tableau 1. Règles compatibles avec l'API Device Administration.
Règle | Description |
---|---|
Mot de passe activé | Exige que les appareils demandent un code ou un mot de passe. |
Longueur minimale du mot de passe | Définissez le nombre de caractères requis pour le mot de passe. Par exemple, vous pouvez exiger que les codes ou les mots de passe comportent au moins six caractères. |
Mot de passe alphanumérique requis | Exige que les mots de passe comportent une combinaison de lettres et de chiffres. Ils peuvent inclure des caractères symboliques. |
Mot de passe complexe requis | Exige que les mots de passe contiennent au moins une lettre, un chiffre et un symbole spécial. Introduit dans Android 3.0. |
Nombre minimal de lettres requises dans le mot de passe | Nombre minimal de lettres requises dans le mot de passe pour tous les administrateurs ou un administrateur spécifique. Introduit dans Android 3.0. |
Nombre minimal de lettres minuscules requises dans le mot de passe | Nombre minimal de lettres minuscules requises dans le mot de passe pour tous les administrateurs ou pour un administrateur spécifique. Introduit dans Android 3.0. |
Nombre minimal de caractères autres que des lettres requis dans le mot de passe | Nombre minimal de caractères non alphabétiques requis dans le mot de passe pour tous les administrateurs ou un administrateur spécifique. Introduit dans Android 3.0. |
Nombre minimal de chiffres requis dans le mot de passe | Nombre minimal de chiffres requis dans le mot de passe pour tous les administrateurs ou pour un administrateur spécifique. Introduit dans Android 3.0. |
Nombre minimal de symboles requis dans le mot de passe | Nombre minimal de symboles requis dans le mot de passe pour tous les administrateurs ou pour un administrateur spécifique. Introduit dans Android 3.0. |
Nombre minimal de lettres majuscules requises dans le mot de passe | Nombre minimal de lettres majuscules requises dans le mot de passe pour tous les administrateurs ou pour un administrateur spécifique. Introduit dans Android 3.0. |
Délai avant expiration du mot de passe | Date d'expiration du mot de passe, exprimée sous forme de delta en millisecondes à partir du moment où un administrateur de l'appareil définit le délai d'expiration. Introduit dans Android 3.0. |
Restriction de l'historique des mots de passe | Cette règle empêche les utilisateurs de réutiliser les n derniers mots de passe uniques.
Cette règle est généralement utilisée conjointement avec setPasswordExpirationTimeout() , qui oblige les utilisateurs à modifier leur mot de passe après un certain temps.
Introduit dans Android 3.0. |
Nombre maximal de tentatives infructueuses de saisie du mot de passe | Indique le nombre de fois qu'un utilisateur peut saisir un mot de passe incorrect avant que l'appareil n'efface ses données. L'API Device Administration permet également aux administrateurs de rétablir à distance la configuration d'usine de l'appareil. Cela permet de sécuriser les données en cas de perte ou de vol de l'appareil. |
Durée maximale d'inactivité sans verrouillage | Définit le délai d'inactivité de l'utilisateur (en secondes) avant que l'appareil ne verrouille l'écran. Dans ce cas, les utilisateurs doivent saisir à nouveau leur code ou mot de passe pour pouvoir utiliser leurs appareils et accéder aux données. Cette valeur peut être comprise entre 1 et 60 minutes. |
Exiger le chiffrement du stockage | Indique que la zone de stockage doit être chiffrée, si l'appareil le permet. Introduit dans Android 3.0. |
Désactiver l'appareil photo | Indique que la caméra doit être désactivée. Notez qu'il ne s'agit pas forcément d'une désactivation permanente. La caméra peut être activée ou désactivée de manière dynamique en fonction du contexte, de l'heure, etc. Introduit dans Android 4.0. |
Autres fonctions
En plus de prendre en charge les règles listées dans le tableau ci-dessus, l'API Device Administration vous permet d'effectuer les opérations suivantes :
- Invitez l'utilisateur à définir un nouveau mot de passe.
- Verrouillez immédiatement l'appareil.
- Effacez les données de l'appareil (c'est-à-dire rétablissez la configuration d'usine).
Application exemple
Les exemples utilisés sur cette page sont basés sur l'exemple d'API Device Administration, qui est inclus dans les exemples de SDK (disponibles via le gestionnaire de SDK Android) et qui se trouve sur votre système sous <sdk_root>/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java
.
L'application exemple propose une démonstration des fonctionnalités d'administrateur de l'appareil. Il présente aux utilisateurs une interface utilisateur qui leur permet d'activer l'application d'administration de l'appareil. Une fois l'application activée, ils peuvent utiliser les boutons de l'interface utilisateur pour effectuer les opérations suivantes :
- Définissez la qualité du mot de passe.
- Spécifiez les exigences relatives au mot de passe de l'utilisateur, telles que la longueur minimale, le nombre minimal de caractères numériques qu'il doit contenir, etc.
- Définissez le mot de passe. Si le mot de passe ne respecte pas les règles spécifiées, le système renvoie une erreur.
- Définissez le nombre de tentatives de saisie du mot de passe autorisées avant l'effacement des données de l'appareil (c'est-à-dire la restauration de la configuration d'usine).
- Définissez le délai d'expiration du mot de passe.
- Définissez la longueur de l'historique des mots de passe (length correspond au nombre d'anciens mots de passe stockés dans l'historique). Cela empêche les utilisateurs de réutiliser l'un des n derniers mots de passe qu'ils ont utilisés.
- Indiquez que la zone de stockage doit être chiffrée, si l'appareil le permet.
- Définissez la durée d'inactivité maximale avant le verrouillage de l'appareil.
- Verrouillez l'appareil immédiatement.
- Effacer les données de l'appareil (c'est-à-dire rétablir la configuration d'usine).
- Désactivez la caméra.

Figure 1 : Capture d'écran de l'application exemple
Développer une application d'administration des appareils
Les administrateurs système peuvent utiliser l'API Device Administration pour écrire une application qui applique les règles de sécurité des appareils à distance ou en local. Cette section récapitule les étapes à suivre pour créer une application d'administration des appareils.
Créer le fichier manifeste
Pour utiliser l'API Device Administration, le fichier manifeste de l'application doit inclure les éléments suivants :
- Sous-classe de
DeviceAdminReceiver
qui inclut les éléments suivants :- Autorisation
BIND_DEVICE_ADMIN
- La capacité à répondre à l'intention
ACTION_DEVICE_ADMIN_ENABLED
, exprimée dans le fichier manifeste sous la forme d'un filtre d'intent.
- Autorisation
- Déclaration des règles de sécurité utilisées dans les métadonnées.
Voici un extrait du fichier manifeste de l'exemple d'administration des appareils :
<activity android:name=".app.DeviceAdminSample" android:label="@string/activity_sample_device_admin"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.SAMPLE_CODE" /> </intent-filter> </activity> <receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" android:label="@string/sample_device_admin" android:description="@string/sample_device_admin_description" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_sample" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
Gardez à l'esprit les points suivants :
- Les attributs suivants font référence aux ressources de chaîne qui, pour l'application exemple, se trouvent dans
ApiDemos/res/values/strings.xml
. Pour en savoir plus sur les ressources, consultez Ressources d'applications.android:label="@string/activity_sample_device_admin"
fait référence au libellé compréhensible de l'activité.android:label="@string/sample_device_admin"
fait référence au libellé de l'autorisation lisible par l'utilisateur.android:description="@string/sample_device_admin_description"
fait référence à la description de l'autorisation lisible par l'utilisateur. Une description est généralement plus longue et plus informative qu'un libellé.
android:permission="android.permission.BIND_DEVICE_ADMIN"
est une autorisation qu'une sous-classeDeviceAdminReceiver
doit posséder pour s'assurer que seul le système peut interagir avec le récepteur (aucune application ne peut se voir accorder cette autorisation). Cela empêche d'autres applications d'utiliser abusivement votre application d'administration de l'appareil.android.app.action.DEVICE_ADMIN_ENABLED
est l'action principale qu'une sous-classeDeviceAdminReceiver
doit gérer pour être autorisée à gérer un appareil. Cette valeur est définie sur le récepteur lorsque l'utilisateur active l'application d'administration de l'appareil. Votre code gère généralement cette valeur dansonEnabled()
. Pour être pris en charge, le récepteur doit également exiger l'autorisationBIND_DEVICE_ADMIN
afin que d'autres applications ne puissent pas en abuser.- Lorsqu'un utilisateur active l'application d'administration de l'appareil, il autorise le récepteur à effectuer des actions en réponse à la diffusion d'événements système spécifiques. Lorsqu'un événement approprié se produit, l'application peut imposer une règle. Par exemple, si l'utilisateur tente de définir un mot de passe qui ne répond pas aux exigences du règlement, l'application peut l'inviter à choisir un autre mot de passe qui y répond.
- Évitez de modifier le nom du récepteur après avoir publié votre application. Si le nom dans le fichier manifeste change, l'administrateur de l'appareil est désactivé lorsque les utilisateurs mettent à jour l'application. Pour en savoir plus, consultez
<receiver>
. android:resource="@xml/device_admin_sample"
déclare les règles de sécurité utilisées dans les métadonnées. Les métadonnées fournissent des informations supplémentaires spécifiques à l'administrateur de l'appareil, telles qu'elles sont analysées par la classeDeviceAdminInfo
. Voici le contenu dedevice_admin_sample.xml
:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> <expire-password /> <encrypted-storage /> <disable-camera /> </uses-policies> </device-admin>
Lorsque vous concevez votre application d'administration des appareils, vous n'avez pas besoin d'inclure toutes les règles, mais uniquement celles qui sont pertinentes pour votre application.
Pour en savoir plus sur le fichier manifeste, consultez le guide pour les développeurs Android.Implémenter le code
L'API Device Administration inclut les classes suivantes :
DeviceAdminReceiver
- Classe de base pour l'implémentation d'un composant d'administration des appareils. Cette classe permet d'interpréter facilement les actions d'intent brutes envoyées par le système. Votre application d'administration des appareils doit inclure une sous-classe
DeviceAdminReceiver
. DevicePolicyManager
- Classe permettant de gérer les règles appliquées à un appareil. La plupart des clients de cette classe doivent avoir publié un
DeviceAdminReceiver
que l'utilisateur a actuellement activé.DevicePolicyManager
gère les stratégies pour une ou plusieurs instancesDeviceAdminReceiver
. DeviceAdminInfo
- Cette classe permet de spécifier les métadonnées d'un composant d'administrateur de l'appareil.
Ces classes constituent la base d'une application d'administration d'appareils entièrement fonctionnelle. Le reste de cette section décrit comment utiliser les API DeviceAdminReceiver
et DevicePolicyManager
pour écrire une application d'administration d'appareils.
Sous-classement de DeviceAdminReceiver
Pour créer une application d'administrateur de l'appareil, vous devez créer une sous-classe de DeviceAdminReceiver
. La classe DeviceAdminReceiver
se compose d'une série de rappels qui sont déclenchés lorsque des événements spécifiques se produisent.
Dans sa sous-classe DeviceAdminReceiver
, l'application exemple affiche simplement une notification Toast
en réponse à des événements spécifiques. Exemple :
Kotlin
class DeviceAdminSample : DeviceAdminReceiver() { private fun showToast(context: Context, msg: String) { context.getString(R.string.admin_receiver_status, msg).let { status -> Toast.makeText(context, status, Toast.LENGTH_SHORT).show() } } override fun onEnabled(context: Context, intent: Intent) = showToast(context, context.getString(R.string.admin_receiver_status_enabled)) override fun onDisableRequested(context: Context, intent: Intent): CharSequence = context.getString(R.string.admin_receiver_status_disable_warning) override fun onDisabled(context: Context, intent: Intent) = showToast(context, context.getString(R.string.admin_receiver_status_disabled)) override fun onPasswordChanged(context: Context, intent: Intent, userHandle: UserHandle) = showToast(context, context.getString(R.string.admin_receiver_status_pw_changed)) ... }
Java
public class DeviceAdminSample extends DeviceAdminReceiver { void showToast(Context context, String msg) { String status = context.getString(R.string.admin_receiver_status, msg); Toast.makeText(context, status, Toast.LENGTH_SHORT).show(); } @Override public void onEnabled(Context context, Intent intent) { showToast(context, context.getString(R.string.admin_receiver_status_enabled)); } @Override public CharSequence onDisableRequested(Context context, Intent intent) { return context.getString(R.string.admin_receiver_status_disable_warning); } @Override public void onDisabled(Context context, Intent intent) { showToast(context, context.getString(R.string.admin_receiver_status_disabled)); } @Override public void onPasswordChanged(Context context, Intent intent, UserHandle userHandle) { showToast(context, context.getString(R.string.admin_receiver_status_pw_changed)); } ... }
Activer l'application
L'un des principaux événements qu'une application d'administration des appareils doit gérer est l'activation de l'application par l'utilisateur. L'utilisateur doit activer explicitement l'application pour que les règles soient appliquées. Si l'utilisateur choisit de ne pas activer l'application, elle restera présente sur l'appareil, mais ses règles ne seront pas appliquées et l'utilisateur ne bénéficiera d'aucun de ses avantages.
Le processus d'activation de l'application commence lorsque l'utilisateur effectue une action qui déclenche l'intent ACTION_ADD_DEVICE_ADMIN
. Dans l'application exemple, cela se produit lorsque l'utilisateur coche la case Enable Admin (Activer l'administrateur).
Lorsque l'utilisateur coche la case Activer l'administrateur, l'écran change pour inviter l'utilisateur à activer l'application d'administration de l'appareil, comme illustré à la figure 2.

Figure 2. Exemple d'application : activer l'application
Vous trouverez ci-dessous le code exécuté lorsque l'utilisateur coche la case Activer l'administrateur. Cela a pour effet de déclencher le rappel onPreferenceChange()
. Ce rappel est invoqué lorsque la valeur de ce Preference
a été modifiée par l'utilisateur et est sur le point d'être définie et/ou persistée. Si l'utilisateur active l'application, l'écran change pour l'inviter à activer l'application d'administration de l'appareil, comme illustré à la figure 2. Sinon, l'application d'administration de l'appareil est désactivée.
Kotlin
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean { if (super.onPreferenceChange(preference, newValue)) return true val value = newValue as Boolean if (preference == enableCheckbox) { if (value != adminActive) { if (value) { // Launch the activity to have the user enable our admin. val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN).apply { putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample) putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, activity.getString(R.string.add_admin_extra_app_text)) } startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN) // return false - don't update checkbox until we're really active return false } else { dpm.removeActiveAdmin(deviceAdminSample) enableDeviceCapabilitiesArea(false) adminActive = false } } } else if (preference == disableCameraCheckbox) { dpm.setCameraDisabled(deviceAdminSample, value) } return true }
Java
@Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (super.onPreferenceChange(preference, newValue)) { return true; } boolean value = (Boolean) newValue; if (preference == enableCheckbox) { if (value != adminActive) { if (value) { // Launch the activity to have the user enable our admin. Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, activity.getString(R.string.add_admin_extra_app_text)); startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN); // return false - don't update checkbox until we're really active return false; } else { dpm.removeActiveAdmin(deviceAdminSample); enableDeviceCapabilitiesArea(false); adminActive = false; } } } else if (preference == disableCameraCheckbox) { dpm.setCameraDisabled(deviceAdminSample, value); } return true; }
La ligne intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
mDeviceAdminSample)
indique que mDeviceAdminSample
(qui est un composant DeviceAdminReceiver
) est la règle cible.
Cette ligne appelle l'interface utilisateur illustrée à la figure 2, qui guide les utilisateurs pour ajouter l'administrateur de l'appareil au système (ou leur permet de le refuser).
Lorsque l'application doit effectuer une opération qui dépend de l'activation de l'application d'administration de l'appareil, elle confirme que l'application est active. Pour ce faire, il utilise la méthode DevicePolicyManager
isAdminActive()
. Notez que la méthode DevicePolicyManager
isAdminActive()
prend un composant DeviceAdminReceiver
comme argument :
Kotlin
private lateinit var dpm: DevicePolicyManager ... private fun isActiveAdmin(): Boolean = dpm.isAdminActive(deviceAdminSample)
Java
DevicePolicyManager dpm; ... private boolean isActiveAdmin() { return dpm.isAdminActive(deviceAdminSample); }
Gestion des règles
DevicePolicyManager
est une classe publique permettant de gérer les règles appliquées sur un appareil. DevicePolicyManager
gère les règles pour une ou plusieurs instances DeviceAdminReceiver
.
Vous obtenez un handle pour DevicePolicyManager
comme suit :
Kotlin
dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
Java
DevicePolicyManager dpm = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
Cette section explique comment utiliser DevicePolicyManager
pour effectuer des tâches administratives :
- Définir des règles relatives aux mots de passe
- Configurer le verrouillage de l'appareil
- Effacer les données
Définir des règles relatives aux mots de passe
DevicePolicyManager
inclut des API permettant de définir et d'appliquer la règle relative au mot de passe de l'appareil. Dans l'API Device Administration, le mot de passe ne s'applique qu'au verrouillage de l'écran. Cette section décrit les tâches courantes liées aux mots de passe.
Définir un mot de passe pour l'appareil
Ce code affiche une interface utilisateur invitant l'utilisateur à définir un mot de passe :
Kotlin
Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).also { intent -> startActivity(intent) }
Java
Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); startActivity(intent);
Définir la qualité du mot de passe
La qualité du mot de passe peut être l'une des constantes DevicePolicyManager
suivantes :
PASSWORD_QUALITY_ALPHABETIC
- L'utilisateur doit saisir un mot de passe contenant au moins des caractères alphabétiques (ou d'autres symboles).
PASSWORD_QUALITY_ALPHANUMERIC
- L'utilisateur doit saisir un mot de passe contenant au moins à la fois des caractères numériques et alphabétiques (ou d'autres symboles).
PASSWORD_QUALITY_NUMERIC
- L'utilisateur doit saisir un mot de passe contenant au moins des caractères numériques.
PASSWORD_QUALITY_COMPLEX
- L'utilisateur doit avoir saisi un mot de passe contenant au moins une lettre, un chiffre et un symbole spécial.
PASSWORD_QUALITY_SOMETHING
- La règle exige un mot de passe, mais ne se soucie pas de sa nature.
PASSWORD_QUALITY_UNSPECIFIED
- Le règlement ne prévoit aucune exigence concernant le mot de passe.
Par exemple, voici comment définir la règle relative aux mots de passe pour exiger un mot de passe alphanumérique :
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName ... dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; ... dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
Définir des exigences concernant le contenu des mots de passe
À partir d'Android 3.0, la classe DevicePolicyManager
inclut des méthodes qui vous permettent d'affiner le contenu du mot de passe. Par exemple, vous pouvez définir une règle stipulant que les mots de passe doivent contenir au moins n lettres majuscules. Voici les méthodes permettant d'affiner le contenu d'un mot de passe :
setPasswordMinimumLetters()
setPasswordMinimumLowerCase()
setPasswordMinimumUpperCase()
setPasswordMinimumNonLetter()
setPasswordMinimumNumeric()
setPasswordMinimumSymbols()
Par exemple, cet extrait indique que le mot de passe doit comporter au moins deux lettres majuscules :
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwMinUppercase = 2 ... dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; int pwMinUppercase = 2; ... dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase);
Définir la longueur minimale du mot de passe
Vous pouvez spécifier qu'un mot de passe doit comporter au moins la longueur minimale indiquée. Exemple :
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwLength: Int = ... ... dpm.setPasswordMinimumLength(deviceAdminSample, pwLength)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; int pwLength; ... dpm.setPasswordMinimumLength(deviceAdminSample, pwLength);
Définir le nombre maximal de tentatives infructueuses de saisie du mot de passe
Vous pouvez définir le nombre maximal de tentatives de saisie de mot de passe autorisées avant l'effacement des données de l'appareil (c'est-à-dire sa réinitialisation à la configuration d'usine). Exemple :
Kotlin
val dPM:DevicePolicyManager private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val maxFailedPw: Int = ... ... dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; int maxFailedPw; ... dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw);
Définir le délai d'expiration du mot de passe
À partir d'Android 3.0, vous pouvez utiliser la méthode setPasswordExpirationTimeout()
pour définir la date d'expiration d'un mot de passe, exprimée sous la forme d'un delta en millisecondes à partir du moment où un administrateur de l'appareil définit le délai d'expiration. Exemple :
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwExpiration: Long = ... ... dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; long pwExpiration; ... dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration);
Restreindre les mots de passe en fonction de l'historique
À partir d'Android 3.0, vous pouvez utiliser la méthode setPasswordHistoryLength()
pour limiter la capacité des utilisateurs à réutiliser d'anciens mots de passe. Cette méthode accepte un paramètre length, qui spécifie le nombre d'anciens mots de passe stockés. Lorsque cette règle est active, les utilisateurs ne peuvent pas saisir de nouveau mot de passe qui correspond aux n derniers mots de passe. Cela empêche les utilisateurs d'utiliser le même mot de passe à plusieurs reprises. Cette règle est généralement utilisée conjointement avec setPasswordExpirationTimeout()
, qui oblige les utilisateurs à modifier leur mot de passe après un certain temps.
Par exemple, cet extrait interdit aux utilisateurs de réutiliser l'un de leurs cinq derniers mots de passe :
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwHistoryLength = 5 ... dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; int pwHistoryLength = 5; ... dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength);
Définir le verrouillage de l'appareil
Vous pouvez définir la période d'inactivité maximale de l'utilisateur avant que l'appareil ne se verrouille. Exemple :
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val timeMs: Long = 1000L * timeout.text.toString().toLong() ... dpm.setMaximumTimeToLock(deviceAdminSample, timeMs)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; ... long timeMs = 1000L*Long.parseLong(timeout.getText().toString()); dpm.setMaximumTimeToLock(deviceAdminSample, timeMs);
Vous pouvez également demander à l'appareil de se verrouiller immédiatement par programmation :
Kotlin
private lateinit var dpm: DevicePolicyManager dpm.lockNow()
Java
DevicePolicyManager dpm; dpm.lockNow();
Effacer les données
Vous pouvez utiliser la méthode DevicePolicyManager
wipeData()
pour rétablir la configuration d'usine de l'appareil. Cela peut être utile en cas de perte ou de vol de l'appareil. La décision d'effacer les données de l'appareil est souvent prise lorsque certaines conditions sont remplies. Par exemple, vous pouvez utiliser setMaximumFailedPasswordsForWipe()
pour indiquer qu'un appareil doit être effacé après un certain nombre de tentatives infructueuses de saisie du mot de passe.
Pour effacer les données :
Kotlin
private lateinit var dpm: DevicePolicyManager dpm.wipeData(0)
Java
DevicePolicyManager dpm; dpm.wipeData(0);
La méthode wipeData()
prend comme paramètre un masque de bits d'options supplémentaires. Actuellement, la valeur doit être égale à 0.
Désactiver l'appareil photo
À partir d'Android 4.0, vous pouvez désactiver l'appareil photo. Notez que cette désactivation n'a pas besoin d'être permanente. La caméra peut être activée ou désactivée de manière dynamique en fonction du contexte, de l'heure, etc.
Vous contrôlez si la caméra est désactivée à l'aide de la méthode setCameraDisabled()
. Par exemple, cet extrait active ou désactive la caméra en fonction d'un paramètre de case à cocher :
Kotlin
private lateinit var disableCameraCheckbox: CheckBoxPreference private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName ... dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked)
Java
private CheckBoxPreference disableCameraCheckbox; DevicePolicyManager dpm; ComponentName deviceAdminSample; ... dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked());
Chiffrement du stockage
À partir d'Android 3.0, vous pouvez utiliser la méthode setStorageEncryption()
pour définir une règle exigeant le chiffrement de la zone de stockage, le cas échéant.
Exemple :
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName ... dpm.setStorageEncryption(deviceAdminSample, true)
Java
DevicePolicyManager dpm; ComponentName deviceAdminSample; ... dpm.setStorageEncryption(deviceAdminSample, true);
Consultez l'exemple de l'API Device Administration pour obtenir un exemple complet d'activation du chiffrement du stockage.
Autres exemples de code
Les exemples Android AppRestrictionEnforcer et DeviceOwner illustrent davantage l'utilisation des API abordées sur cette page.