web-dev-qa-db-fra.com

Est-il possible de faire fonctionner mon application en mode sans échec?

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.

  1. Est-il possible de faire fonctionner mon application dans 'Safe mode' également?

  2. 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?

  3. Qu'est-ce que les applications d'administration de périphérique? Est-ce utile dans cette situation?

  4. Est-il possible de détecter le mode sans échec par programmation?

Merci d'avance

20
Devu Soman

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.

3
Robyer

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.

  1. téléchargez Lucky Patcher et activez l'accès root

  2. 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

  3. cliquez sur l'application, cliquez sur Outils, puis appuyez sur Déplacer vers/Système/application.

  4. une fois le processus terminé, le périphérique devra être redémarré

  5. l'application utilisateur peut désormais être consultée en mode sans échec

1
Sam Moldenha

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.

1
Abdulatif Salat

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.

0
Karthik