est-il possible d'activer le débogage USB (sous Paramètres / applications / Développement) à partir de mon application? P>
Je cherchais permission.write_setstings code> et
http://developer.android.com/reference/andrroid/provider/settings .Ystem.html ,
Mais je n'ai rien trouvé approprié. P>
6 Réponses :
Ce n'est pas possible sans utiliser votre propre micrologiciel personnalisé qui accède à l'accès aux paramètres de sécurité. Voir le fil ici: http://groups.google.com/group/ Android-développeurs / Browse_frm / thread / 953C6F0EB0FA9bed # P>
Vous aurez besoin d'autorisations racines pour le faire à partir d'une application. strong> qui dit, il em> est possible pour activer adb en exécutant les commandes de terminal suivantes: p> Ce blog post donne un excellent exemple de comment exécuter ces commandes avec des autorisations escaladées via su code>. p> p>
J'ai changé et marqué cette réponse comme solution correcte en faveur de ma propre réponse que j'ai donnée deux ans plus tôt. Peut-être que les choses ont changé au fil du temps, mais même cette réponse a aussi 7 ans. Je ne l'ai pas testé moi-même, mais étant donné les avances, je suppose que c'est correct.
Premier: Votre application doit être une application système forte> p>
Cette ligne de code peut aider: p>
Et vous avez besoin de cette autorisation: p>
Mais après avoir ajouté cette permission dans Manifest, vous obtiendrez cette erreur:
Ce qui signifie votre application doit être une application système forte>. p> paramètres.global.puTinint (getContentresolver (), global.aDb_enabled, 1); code> p>
Vous pouvez activer les adb par programme en demandant wreck_secure_settings dans Manifest et l'accordant sur le shell d'adb:
Settings.Secure.putString(mContext.getContentResolver, Settings.Secure.ADB_ENABLED,"1");
Merci pour l'indice, bon de savoir. Bon si j'avais ce drapeau il y a 8 ans.
Si votre appareil dispose de racine et de niveau API> 17 pour Activer ADB: ou (dépend de la mise en oeuvre supplémentaire) p>
Vous devez suivre ces 3 étapes p>
code> li>
- Utilisez cette commande dans le code pour activer USB Débogo
paramètres.secure.puTinint (requérissant (). contentesResolver, paramètres.global.adb_enabled, 1) code> ou Paramètres.secure.putation ( Expédition (). contentesResolver, paramètres.global.adb_enabled, 0) code> Pour le désactiver LI>
- important strong> avant de pouvoir utiliser ces API système, vous devez accorder write_secure_settings de adb exécutant
adb shell pm gagnez votre.package.name android.permission.write_secure_settins code>. Le périphérique doit être attaché à l'ordinateur avec USB DEBUG ACTIVE. LI>
ol>
J'ai développé une application simple qui utilise cette approche pour activer / désactiver certaines options de développeur tels que Débogou usb em> et Screen Active em> https://play.google.com/store/apps/details?id=it.stzan. DevTools P>
Disclaimer: Je suis le développeur réel de devtools fort> p>
Curiosité simple: pourquoi voudriez-vous faire cela dans une application comme vous avez besoin d'un pilote lorsque vous vous connectez à un ordinateur?
ce n'est pas un problème. J'écris une application de synchronisation (Java WebStart) qui fonctionnera sur un ensemble d'ordinateurs prédéfini. Les utilisateurs doivent pouvoir synchroniser le téléphone, mais lorsque je leur remettez les appareils, il est en mode sans débogage. Lorsque les utilisateurs veulent synchroniser, l'application doit activer / désactiver le mode de débogage, car ils ne quitteront jamais mon application. Mon application commence sur le démarrage et est définie à l'intention de la maison par défaut par défaut. (Contexte: Je suis regroupé l'application avec un appareil, que je loue ensuite à l'utilisateur). Mais les «stations de synchronisation» seront préconfigurées et ont des pilotes de périphérique, etc. déjà installés.
... De plus, je veux appeler adb du programme de synchronisation ... C'est pourquoi le montage USB simple n'est pas suffisant (ou nécessiterait des travaux de contournement supplémentaires)