Exécuter un service avec les privilèges de Root ou de l'ajout d'autorisations root

Je suis actuellement en train de développer une application qui lit les SMS/e-Mails pendant la conduite. De nombreux utilisateurs support souhaité pour WhatsApp /KakaoTalk.

Cependant, comme il n'est pas "officiel" de la façon de recevoir leurs messages, il n'y aurait que trois options, tous exigeant racine:

La façon la plus facile de la numérisation de leur base de données dans un intervall.

  • Facile à mettre en œuvre.
  • Cependant pas de batterie efficace
  • Également les messages ne sont pas lus immédiatement.

Un autre moyen serait de lancer un service avec des droits root et enregistrer un récepteur qui est à l'écoute de leurs notifications push. Cela doit être fait avec de la racine, comme les deux paquets ont besoin d'une signature basée sur l'autorisation de recevoir leurs notifications push.

  • Plus difficile à mettre en œuvre
  • Meilleure expérience utilisateur

Aussi une autre chose est venu à mon esprit: Serait-il possible d'ajouter manuellement des autorisations à un APK après l'installation? Dans ce cas, je pourrais ajouter la c2dm autorisations à mon colis.

  • Ce serait rendre les choses très facile
  • Cependant, je suis un peu peur de mon changement d'application des autorisations, ce qui est totalement contre l'Android Sandbox principe.
  • Encore, si il serait possible, faites le moi savoir!

Le problème est, comment exactement puis-je faire fonctionner un service avec des droits root (est-il réellement possible)? Je sais comment faire pour exécuter des commandes shell ou binaires avec la racine, mais je n'ai aucune idée de comment démarrer une partie d'un APK en tant que root.

Aussi, serait-il possible d'intégrer un BroadcastReceiver dans un fichier binaire? En fait, j'ai pas d'expérience avec C/C++, en particulier dans un environnement android.

Pouvez-vous m'aider?
Merci.

edit: Comme je l'ai dit dans le commentaire, je ne souhaitez pas utiliser un AccesibilityService, car il ne correspond pas à mes besoins (par exemple, il va me donner "2 messages non lus" si plus d'un est non lus, également de ne pas inclure l'ensemble du corps).

edit2: Juste pour clarifier les choses: je sais comment exécuter des commandes avec les privilèges root. Ce que j'ai besoin de savoir, c'est comment enregistrer un Broadcastreceiver, qui reçoit spécifiques émission "normal" récepteurs ne comprends pas que l'Émission elle-même exige une signature basée permission, je n'en ai pas.

Je ne sais pas comment faire pour exécuter un binaire en tant que root, mais qui devrait être le point de départ. Malheureusement, comme je sais que vous NE pouvez pas enregistrer un BroadcastReceiver vous n'avez pas la permission de même AVEC la racine. La raison d'être, tout processus d'exécuter avec l'UID 0 sera isolé et NON à l'intérieur d'Android du Zygote, donc pas de Contexte et donc pas d'option pour un BroadcastReceiver. Cela étant dit, je suis loin d'être certain de cela.

OriginalL'auteur Force | 2012-02-03