In einer Antwort wurde mir geraten, zu verwenden service call phone 2 s16 "$number"
. Es funktioniert, aber service list
ich sehe andere nützliche Dinge, die ich nicht verwenden kann, und kann die Informationen im Internet nicht leicht finden.
Ich sehe keine Selbstbeobachtung, service
außer service list
mich selbst herauszufinden ...
Wo finden Sie eine ausführlichere Beschreibung der "Service" -Aufrufe und ihrer Parameter?
Antworten:
Zusamenfassend
Im Detail hatte
ich viele Probleme damit, darüber Bescheid zu wissen, und daher werde ich die Lösung mithilfe des Zwischenablagedienstes teilen.
Zuerst müssen Sie wissen, an welchem Dienst Sie interessiert sind -
Dazu müssen Sie durch Eingabe nach allen Diensten suchen, die für ein bestimmtes Android-System verfügbar sind
Hier ist was Sie bekommen -
Da ich mich für den Service in der Zwischenablage interessiere, sieht es folgendermaßen aus
Von hier aus können wir zusammenfassen, dass der Dienstname Zwischenablagedienst und der Paketpfad android.content.IClipboard ist
Dann müssen Sie den vollständigen Pfad kennen, in dem sich IClipboard.aidl befindet.
Um zu wissen, dass Sie auf Google nach IClipboard.aidl suchen müssen.
Sie müssen in den Ergebnissen nach etwas von der android.googlesource.com-Website suchen, wie in meinem Fall.
Nach + / android-4.2.2_r1 liegt also Ihr Pfad. Lassen Sie diesen Pfad path_of_clipboard.aidl = sein
Da diese Serviceanrufcodes vom Android-System abhängig sind, müssen Sie Ihren Android-Betriebssystemnamen kennen. In meinem Fall ist es 8.1.0.
Ich gehe also auf die folgende Website, auf der Google den Code abgibt, und wähle meine Betriebssystemversion aus linke Seite für die Seite -
https://android.googlesource.com/platform/frameworks/base/
In meinem Fall ist es android-8.1.0_r50.Ich werde darauf klicken und danach wird meine URL so aussehen
Und nach dem Hinzufügen von path_of_clipboard.aidl sieht meine vollständige URL so aus
Hier gibt es viele Methoden in der Schnittstelle. Wie in meinem Fall
Der Code für die erste Methode, dh setPrimaryClip, ist also 1, wie er an erster Stelle aufgetreten ist, und der für die letzte Methode, dh hasClipboardText, ist 7, wie er an siebter Stelle in der Hilfedatei aufgetreten ist. Ähnliches gilt für die anderen Methoden.
Wenn ich also die siebte Methode aufrufen möchte, gebe ich ein
Wie Sie vielleicht gesehen haben, habe ich den Namen callingPackage nicht eingegeben, da er nicht erforderlich ist.
Wenn die Methode Argumente benötigt, können Sie sie wie in diesem Beispiel gezeigt übergeben.
Nehmen wir eine Methode an, deren Code in der Zwischenablage 8 ist und die so aussieht:
Also werde ich es so nennen
Hier steht i32 für 32-Bit-Ganzzahl und s16 für den String. Wir können sogar einen booleschen Wert als Ganzzahl übergeben, wie im Beispiel gezeigt.
In der booleschen Ganzzahl steht 1 für wahr und 0 für falsch.
TIPP Halten Sie die logcat offen (wie in Android Studio) für Fehler zu überprüfen , die aufgetreten , während dieses adb Befehl ausgeführt wird .
Quelle
quelle
Das eigentliche Problem dabei
service call
ist, dass Transaktionscodes nicht nur nicht dokumentiert, sondern auch nicht garantiert stabil sind - sie können stillschweigend zwischen Android-Versionen geändert werden. Aus diesem Grundservice call
sollten Befehle nur für das private Debuggen verwendet werden, wenn Sie wissen, welche Android-Version verwendet wird.Beispiel:
(Hier
FIRST_CALL_TRANSACTION
= 1, der tatsächliche Transaktionscode, der imservice call phone
Befehl verwendet werden soll, ist die in der Quelle angegebene Nummer plus 1.)Beachten Sie, dass in der neuen Version
TRANSACTION_supplyPuk
in der Mitte eingefügt wurde und alle folgenden Codes jetzt um 1 verschoben werden. Alles, wasservice call phone
zur Ausführung dieser Transaktion verwendet wurde, wird bei Verwendung unter Android 4.2.2 schrecklich kaputt gehen - dieselben Codes führen dazu, dass völlig andere Methoden aufgerufen werden möglicherweise mit katastrophalen Folgen.quelle
service call
, aber dennoch viele Dinge über die Superuser-Konsole erledigt werden kann?Es gibt keine Dokumentation. Aber Sie können alle Informationen, die Sie suchen, im Android-Quellcode finden.
service list
gibt Ihnen den Paketnamen. Also für denphone
Service ist escom.android.internal.telephony.ITelephony
. Sie werden alle möglichen Parameter für findenservice call phone
aufgelistet incom/android/internal/telephony/ITelephony.java
für Ihre Android - Version.quelle