Burn2 Posté(e) 23 septembre 2013 Share Posté(e) 23 septembre 2013 (modifié) 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é 14 novembre 2013 par Burn2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 24 septembre 2013 Share Posté(e) 24 septembre 2013 Bonjour, Comment as-tu ajouté la librairie libsuperuser.jar à ton projet ? Normalement, il te suffit de mettre ce jar dans le répertoire libs de ton projet pour qu'elle soit prise en compte Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Burn2 Posté(e) 24 septembre 2013 Auteur Share Posté(e) 24 septembre 2013 (modifié) 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é 24 septembre 2013 par Burn2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Burn2 Posté(e) 24 septembre 2013 Auteur Share Posté(e) 24 septembre 2013 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 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Burn2 Posté(e) 7 novembre 2013 Auteur Share Posté(e) 7 novembre 2013 (modifié) 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é 7 novembre 2013 par Burn2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Burn2 Posté(e) 12 novembre 2013 Auteur Share Posté(e) 12 novembre 2013 Personne??? ...Bon ben je retente avec libsuperuser, voir si cela résout mon soucis. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 12 novembre 2013 Share Posté(e) 12 novembre 2013 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) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Burn2 Posté(e) 12 novembre 2013 Auteur Share Posté(e) 12 novembre 2013 (modifié) 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é 13 novembre 2013 par Burn2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Burn2 Posté(e) 14 novembre 2013 Auteur Share Posté(e) 14 novembre 2013 (modifié) 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é 14 novembre 2013 par Burn2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.