2009-08-03 9 views
24

Je voudrais demander à un utilisateur de saisir un mot de passe avant de pouvoir désinstaller/supprimer mon application. Comment puis-je implémenter cette fonctionnalité?Demander un mot de passe pour désinstaller/supprimer l'application

+1

pourriez-vous donner plus de détails. OS, langues, etc –

+0

Dans android, lors de l'installation d'une application, il devrait demander le nom d'utilisateur et mot de passe. et lors de la désinstallation de l'utilisateur de l'application doit entrer le nom d'utilisateur et le mot de passe corrects. – arams

+17

N'est-ce pas un peu dur? En tant que client, si jamais je devais entrer un mot de passe pour désinstaller un logiciel, je serais très déconnecté! Je me sauverais la peine et ne l'implémenterais pas. – Steg

Répondre

1

Ceci est un problème difficile. Je peux penser à au moins un cas d'utilisation non-diabolique pour cela.

par exemple. Application de récupération de téléphone Stolen - vous souhaitez empêcher les utilisateurs de ne pas désinstaller l'application.

Dans ce cas, je peux penser à deux hypothèses sensées qui me arrêter la mise en œuvre ce que vous cherchez:

  • le voleur ne connaît pas votre application, ne sera donc pas essayer de le désinstaller.
  • le voleur est au courant de votre application, et l'éteindre jusqu'à ce qu'il puisse l'obtenir à une boîte de fer * pour réinstaller le système d'exploitation.

* Pour les non initiés: un iron box empêchera le dispositif d'envoi ou de réception de signaux électromagnétiques.

Bien sûr, cette réponse équivaut à You Ain't Going To Need It, même si je pense que vous avez déjà réfléchi à cela.

+2

Une application d'entreprise serait une autre utilisation non mauvaise – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

13

Vous pouvez le faire par:

  • La première fois que votre application est installée, installez une application séparée/paquet (« veilleur »).
  • Les classes que « regardeur » contient est un BroadcastReceiver qui écoute ACTION_PACKAGE_REMOVED
  • Ajouter un BroadcastReceiver à votre application qui écoute aussi pour ACTION_PACKAGE_REMOVED
  • Lorsqu'une intention est diffusée à un de vos récepteurs, vérifiez si l'autre composant est toujours installé. Si ce n'est pas le cas (l'utilisateur vient juste de le désinstaller), demandez le mot de passe - si ce n'est pas le cas, réinstallez l'autre composant. Si c'est juste, désinstallez-vous.
+9

et, ce qui empêche exactement l'utilisateur de désinstaller d'abord cet observateur? – kellogs

+6

Un autre wathcer lol;) – nithinreddy

+1

Votre réponse est simple et génial. Pourriez-vous m'aider avec la pièce réinstallée? Comment peut-il être mis en œuvre? – keybee

4

Vous pouvez exécuter logcat et obtenir les informations d'intention d'activité de démarrage. Vous trouverez qu'avant l'affichage de l'activité de désinstallation, il y a un message texte tel que: Début de l'activité: Intent {act = android.intent.action.DELETE dat = package: com.comodo.pimsecure cmp = com. android.packageinstaller/.UninstallerActivity} alors vous pouvez lancer une activité demander le mot de passe maintenant.

+1

C'est une très bonne option à faire ... mais pouvez-vous aider avec peu de code ou une sorte d'aide qui élabore ceci ... MY Application est l'admin de l'appareil, maintenant je veux montrer une page de mot de passe de mon application avant d'autoriser la suppression. J'AI BESOIN D'AIDE POUR DÉTECTER L'ACTIVITÉ DE DÉSINSTALLATION L'APPLICATION –

+1

logcat -d -n 5 ActivityManager: I *: S et tous les journaux sur activityManager s'affichent. Ensuite, vous pouvez lire le journal pour trouver le mot-clé "android.intent.action.DELETE", si vous avez trouvé cela, puis l'étape 2: trouver le nom de votre paquet dans le même enregistrement de journal, si vous trouvez le nom de votre paquet, alors log signifie que l'appareil a une activité pour désinstaller votre application, et vous pouvez maintenant faire une activité de mot de passe. – Mikonos

1

C'est possible. vous pouvez le faire avec DeviceAdminReceiver api. (Je ne sais pas comment)

Questions connexes