J'ai une application Android qui répertorie les applications installées et les applications système séparément. Lorsque l'utilisateur essaie de redémarrer le périphérique à partir de mon application, il ouvre mon application au lieu du programme de lancement par défaut.
Cependant, lorsque le périphérique redémarre sur 'safe mode'
, toute la logique plante.
Est-il possible de faire fonctionner mon application dans 'Safe mode'
également?
Existe-t-il un moyen d'empêcher le périphérique d'accéder à 'safe mode'
lors de l'exécution de mon application, par exemple en utilisant un RECEIVE_BOOT_COMPLETED
broadcastreceiver?
Qu'est-ce que les applications d'administration de périphérique? Est-ce utile dans cette situation?
Est-il possible de détecter le mode sans échec par programmation?
Merci d'avance
Je sais que cette question est ancienne, mais peut-être que cela aidera quelqu'un. Si votre application est propriétaire du périphérique ou propriétaire du profil sur l'utilisateur principal, vous pouvez désactiver complètement le mode sans échec (cela fonctionne sans root):
DevicePolicyManager manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName admin = new ComponentName(getApplicationContext(), DeviceAdminReceiver.class);
// To disable safe boot
manager.addUserRestriction(admin, UserManager.DISALLOW_SAFE_BOOT);
// To enable safe boot again
// manager.clearUserRestriction(admin, UserManager.DISALLOW_SAFE_BOOT);
EDIT: vous pouvez définir le propriétaire du périphérique ou le propriétaire du profil simplement via ADB: https://developer.Android.com/studio/command-line/adb#dpm
adb Shell dpm set-device-owner com.example.deviceownerapp/.DeviceAdminReceiver
Notez que vous ne devez ajouter aucun compte lors de l'activation du propriétaire de l'appareil (vous n'avez pas besoin de réinitialiser le système, il vous suffit de supprimer tous les comptes des paramètres). Une fois le propriétaire du périphérique défini, vous pouvez à nouveau ajouter des comptes.
La seule façon de faire est de faire de l'application utilisateur une application système sur/system/app
Mais si votre appareil est enraciné, il existe un moyen simple de le faire.
téléchargez Lucky Patcher et activez l'accès root
utilisez l'option de recherche pour trouver l'application que vous voulez pouvoir utiliser en mode sans échec ou trouvez-la simplement dans le menu déroulant
cliquez sur l'application, cliquez sur Outils, puis appuyez sur Déplacer vers/Système/application.
une fois le processus terminé, le périphérique devra être redémarré
l'application utilisateur peut désormais être consultée en mode sans échec
Si vous créez un raccourci de cette application que vous souhaitez lancer en mode sans échec, vous pouvez le faire en mode sans échec. Mais vous devriez être en mode normal lors de la création du raccourci.
Les applications d’administrateur de périphérique ne fonctionnent pas non plus.
Pour exécuter votre application en mode sans échec, vous devez copier votre application dans/system/app, pour laquelle vous avez besoin d'un accès root.
Donc, seulement sur le périphérique enraciné, c'est possible.