Aller au contenu

[Résolu]Accès root dans une application


Burn2

Recommended Posts

Bonjours, dans le but de gérer le mode avions sous android 4.2 et 4.3, il me faut visiblement accéder au mode root.

J'ai trouvé la lib libsuperuser:

https://github.com/Chainfire/libsuperuser

 

Mais je m'arrache les cheveux. 

En gros je me suis préparé une VM qui est rootée (bon ça c'est un détail ça n'expliquerait pas l'erreur je pense), j'ai inclue la lib dans mon projet, et je fais juste:

 

"Shell.SU.available()"

 

Pour voir si je détecte bien le mode su, sauf que l'apk se vautre en me mettant en gros que le package com.eu.chainfire.... n'existe pas.

Comment inclure la lib dans l'apk? En C++ and co je sais comment inclure la lib dans le binaire, mais là je ne vois pas du tout comment faire dans un apk sous eclipse. :/


Merci d'avance si vous avez des idées.

 

Modifié par Burn2
Lien vers le commentaire
Partager sur d’autres sites

Bonjour, merci pour la réponse, alors je reprends ce que j'ai fais, j'ai fais un autre test.

J'ai Mis la lib dans le répertoire.

J'ai rajouté la lib dans le projet (bien sûr :o ), J'ai testé de deux manières, en intégrant le jar, ou en faisant référence au sources directes de la lib (téléchargé préalablement bien sûr)

J'ai fais l'import qui va bien dans les sources.

J'ai utilisé une fonction de la lib ==> Tout va bien pas d'erreur eclipse est content.

 

Je compile ==> Pas d'erreur.

J'exécute, je vois une erreur:

libsuperuser.apk does not exist. Et lorsque j'utilise une des fonctions de la lib ==> crash de l'application et dans le log ça me dit que eu.... does not exist.


J'ai tenté roottools. Et même problème.

Il me dit que la lib n'existe pas.


Je ne comprends vraiment pas. :(

Modifié par Burn2
Lien vers le commentaire
Partager sur d’autres sites

Bon, j'ai retenté avec rootools, ce que j'avais fait avec libsuperuser!

ET cette fois ça marche! Dans projet il faut aussi inclure la lib dans export (ce que j'avais fait pour libsuperuser mais ça ne marchait pas).

J'obtiens bien la demande de droit root, et changer le mode avion fonctionne parfaitement!!!! Même sous android 4.3

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Finalement j'ai quand même un soucis. 
En fait ça fonctionne mais pas totalement. Qu'est ce que je veux dire?

Et bien en fait, la demande de root marche, et ça applique bien ce que je veux, l'écran allumé tout est ok.

Sauf que si le téléphone est en veille, la demande reste en attente, comprendre tant que je n'allume pas l'écran, la demande ne se fait pas, mon service reste en cours d'exécution et rien ne se passe, dès que je sors le téléphone de veille via le bouton power, je vois mon service qui était en attente qui s'exécute et qui du coup effectue les actions qu'ils doit faire, c'est comme si ça attendait indéfiniment un accord.

Vous avez une idée de comment contourner ça? (mon application a bien sur tous les droits depuis l'application qui contrôle les droits roots)

 

En gros si le téléphone est allumé: la demande root se fait et le téléphone passe bien en veille.
si le téléphone est en veille, le service se lance, et attend, si j'allume mon écran alors le service fait enfin les actions qu'il doit faire. 

Modifié par Burn2
Lien vers le commentaire
Partager sur d’autres sites

Je pense que le problème vient plutôt de la façon dont tu déclenches ton évenement. Commet fais-tu ? C'est une alarme (de AlarmManager) ? Si oui, utilise tu bien le type RTC_WAKEUP ou ELAPSED_REALTIME_WAKEUP pour forcer le réveil, le cas échéant, du smartphone lorsque l'alarme est déclenchée (sinon, l'éxécution ne se produit que lorsque le téléphone sort effectivement de veille)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, merci de ta réponse, j'utilise bien le RTC_WakEUP.

Comme dit, le service marche, et marchait avant. En gros si je ne fais pas une action root, l'action se fait bien lorsque le téléphone est éteint. Mon programme était 100% fonctionnel sous android 4.1. 

Le problème se pose uniquement lorsque je fais une action root (chose obligatoire pour basculer du mode avion avec android 4.2/4.3), tout le reste fonctionne toujours.

Je ne sais plus quoi faire, j'ai testé toutes les libs root, et j'ai à chaque fois ce problème. En gros ça marche, mais si le téléphone est en veille, le service tourne, et l'action root ne se fait que lorsque le téléphone sort de veille. (le service est bloqué en attente jusque là).

 

 

EDIT/ libsuperuser idem.

Je vais voir si je ne peux pas jouer avec les modes de reveil du téléphone, quitte à même allumer l'écran si c'est obligatoire. 

Je ne vois que ça. Si quelqu'un d'autre sait comment faire je suis preneur...

Modifié par Burn2
Lien vers le commentaire
Partager sur d’autres sites

En réveillant l'écran ça marche! Déjà j'ai une solution de contournement. Maintenant je vais voir si je ne peux pas le faire sans réveiller l'écran. En forçant un wake lock mais sans réveil de l'écran. j'en doute mais bon... Déjà je ne suis pas bloqué.

 

Edit: ça marche j'ai trouvé une solution de contournement!

PowerManager pm = (PowerManager)m_context.getSystemService(Context.POWER_SERVICE);
//PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Sleepytux");
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK| PowerManager.ACQUIRE_CAUSES_WAKEUP, "Sleepytux");
wl.acquire();
//faire l'action root ici
wl.release();

Et ça marche! ça c'est une bonne nouvelle.

Modifié par Burn2
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...