Note : La solution est testée sur Android 4.2.1, 5.0.2 et 5.1.1.
La valeur de la propriété du système persist.sys.safemode détermine si le téléphone doit démarrer en mode sécurisé ou en mode normal.
Lorsque l'on démarre dans le système d'exploitation Android, avec un accès Root, la valeur peut être modifiée comme suit
adb shell su -c 'setprop persist.sys.safemode 1'
adb shell su -c 'echo "1" > /data/property/persist.sys.safemode' #alternative
Lorsque l'on démarre dans un récupération Étant donné que les données et, éventuellement, la partition système sont montées, faites ce qui suit
adb shell busybox printf "1" > /data/property/persist.sys.safemode #works if recovery has Busybox. If Android OS has busybox then system/xbin/busybox would work
adb shell echo "1" > /data/property/persist.sys.safemode #alternative
adb shell chmod 600 /data/property/persist.sys.safemode #required; changes the permission of file to rw-------, identical to rest of the files under /data/property
Il doit être a noté que si vous n'avez jamais démarré en mode sans échec depuis la dernière réinitialisation d'usine, le fichier persist.sys.safemode
ne serait pas trouvé.
Android réinitialise le contenu de ce fichier à chaque redémarrage, vous n'avez donc pas à vous inquiéter de rester bloqué en mode sans échec. Cependant, pour des raisons de sécurité, changez la valeur en 0
ou vider le fichier (NULL), si jamais vous êtes bloqué.
En bref, la propriété que vous définissez est stockée dans un fichier, et reste donc persistante lorsque vous arrêtez l'appareil. Vous pouvez voir votre valeur dans le fichier à partir du mode de récupération, à condition de ne pas avoir redémarré Android après avoir modifié la propriété. Maintenant, une fois que vous commencez à démarrer dans Android OS, Android et al lit le fichier, et en fonction du contenu, prépare le mode sûr/ordinaire pour vous. Après avoir lu le fichier, il réinitialise le contenu du fichier, de sorte que la prochaine fois que vous redémarrez, il sera toujours en mode ordinaire.
Lors de mes expériences, j'ai remarqué qu'Android démarrait en mode sans échec même si la valeur est un nombre entier positif ou négatif ou même une valeur décimale.
J'ai obtenu un bon indice du code source de ShutdownThread.java que le mode sans échec requiert une propriété système à régler. Cependant, je suis arrivé à la conclusion finale en utilisant un commentaire par pylerSM et un poste de ZiT777.