12 Stimmen

Aktivieren Sie das USB-Debugging (unter Einstellungen/Anwendungen/Entwicklung) programmatisch innerhalb einer Anwendung

Ist es möglich, USB-Debugging (unter Einstellungen/Anwendungen/Entwicklung) programmatisch aus meiner Anwendung heraus zu aktivieren?

Ich habe mir Permission.WRITE_SETTINGS y http://developer.Android.com/reference/Android/provider/Settings.System.html , aber ich konnte nichts Passendes finden.

0 Stimmen

Aus reiner Neugier: Warum wollen Sie das in einer App machen, wo Sie doch einen Treiber brauchen, wenn Sie eine Verbindung zu einem Computer herstellen?

0 Stimmen

Das ist kein Problem. Ich schreibe eine Sync-App (Java-Webstart), die auf einem vordefinierten Satz von Computern ausgeführt wird. Benutzer sollen in der Lage sein, das Telefon zu synchronisieren, aber wenn ich die Geräte an sie aushändige, ist es im Nicht-Debug-Modus. Wenn der Benutzer synchronisieren möchte, soll die App den Debug-Modus aktivieren/deaktivieren, da der Benutzer meine App nie verlassen wird. Meine App startet beim Hochfahren und ist standardmäßig auf die Standard-Startseite eingestellt. (Hintergrund: Ich bündele die App mit einem Gerät, das ich dann an den Nutzer vermiete). Die "Sync-Stationen" werden jedoch vorkonfiguriert sein und JRE, Gerätetreiber usw. bereits installiert haben.

0 Stimmen

... plus ich möchte adb aus dem Sync-Programm aufrufen ... weshalb einfaches usb-Mounting nicht ausreicht (oder zusätzliche Workarounds erfordern würde)

14voto

Paul Lammertsma Punkte 36529

Dazu benötigen Sie Root-Berechtigungen für eine App.

Das heißt, es ist Sie können ADB aktivieren, indem Sie die folgenden Terminalbefehle ausführen:

setprop persist.service.adb.enable 1
start adbd

Dieser Blogbeitrag gibt ein hervorragendes Beispiel für die Ausführung dieser Befehle mit erweiterten Rechten durch su .

10voto

Milad Faridnia Punkte 8644

Erstens: Ihre Anwendung muss eine Systemanwendung sein

Diese Codezeile kann helfen:

Settings.Global.putInt(getContentResolver(), Global.ADB_ENABLED, 1);

und Sie brauchen diese Erlaubnis:

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

aber nach dem Hinzufügen dieser Berechtigung im Manifest erhalten Sie diesen Fehler: Berechtigung wird nur für Systemanwendungen erteilt

was bedeutet Ihre Anwendung muss eine Systemanwendung sein .

5voto

Mathias Conradt Punkte 28087

Das ist nur möglich, wenn Sie eine eigene Firmware verwenden, die Zugriff auf die Sicherheitseinstellungen gewährt. Siehe Thread hier: http://groups.google.com/group/Android-developers/browse_frm/thread/953c6f0eb0fa9bed#

5voto

JustHobby Punkte 403

Sie können adb programmatisch aktivieren, indem Sie WRITE_SECURE_SETTINGS im Manifest anfordern und es über die adb-Shell gewähren:

adb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS

Dann können Sie adb auf API 17 und höher durch Aufruf aktivieren:

Settings.Global.putString(mContext.getContentResolver, Settings.Global.ADB_ENABLED,"1");

Für den Aufruf von API 16 nach API 3:

Settings.Secure.putString(mContext.getContentResolver, Settings.Secure.ADB_ENABLED,"1");

Um adb zu deaktivieren, ersetzen Sie "1" durch "0" in den Befehlen

2voto

Stefano Zanella Punkte 73

Sie müssen diese 3 Schritte befolgen

  1. in das Manifest setzen <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
  2. Verwenden Sie diesen Befehl im Code, um das USB-Debugging zu aktivieren Settings.Secure.putInt(requireActivity().contentResolver, Settings.Global.ADB_ENABLED, 1) o Settings.Secure.putInt(requireActivity().contentResolver, Settings.Global.ADB_ENABLED, 0) zu deaktivieren
  3. WICHTIG Bevor Sie diese System-API verwenden können, müssen Sie WRITE_SECURE_SETTINGS von adb aus zulassen. adb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS . Das Gerät muss mit aktivem USB-Debug an den Computer angeschlossen sein.

Ich habe eine einfache Anwendung entwickelt, die diesen Ansatz nutzt, um einige Entwickleroptionen zu aktivieren/deaktivieren, z. B. USB-Fehlerbehebung y Gerätebildschirm aktiv halten https://play.google.com/store/apps/details?id=it.stzan.devtools

Haftungsausschluss: Ich bin der aktuelle Entwickler von DevTools

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X