Senden einer SMS auf Android durch ADB
Ich würde gerne in der Lage sein, eine SMS zu senden, von meinem Android-Handy, während es angeschlossen an meinen computer mit folgenden ADB Befehlen
adb shell am start -a android.intent.action.SENDTO -d sms:CCXXXXXXXXXX --es sms_body "SMS BODY GOES HERE" --ez exit_on_sent true
adb shell input keyevent 22
adb shell input keyevent 66
Ich habe diese Arbeit allerdings auf das Telefon öffnet sich eine text-Nachricht an den Empfänger mit dem Körper ausgefüllt sind und klicken Sie dann auf die Schaltfläche senden und zurück zu, wo Sie waren. Gibt es eine Möglichkeit, dies zu tun völlig in den hintergrund, so würde es nicht stören, nichts passiert auf dem Handy?
- Für neue Android-Handys, die Sie besser tun tabbing zwei mal so, es würde sein: adb shell input keyevent 22 adb shell input keyevent 22 adb shell input keyevent 66
- Auf Android-8, ich hatte zu senden keyevent 61 zweimal, gefolgt von keyevent 66.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze version :
Android 5 und älter (hier android 4):
Android 5 und später (hier android 9):
Isms-Methode Anzahl (5 und 7 oben) ändern kann mit der android-version . Lesen Sie die komplette Erklärung um es zu verstehen.
Vollständige Erklärung für alle android-version :
Ja, es existiert ! aber nicht mit diesem Befehl, weil dieser input-Ereignisse blockiert werden, in den Schlaf-Modus.
Diese Lösung hängt von deiner android-version, so werde ich zu erklären, dass Sie für fast alle version ...
1. überprüfen Sie, ob der service isms mit :
Die Antwort gefunden haben, gut, in Bewegung zu halten. Die service-Ismen haben verschiedene "Optionen" die syntax ist :
Den service-Namen können gefunden werden durch Eingabe von :
Zeigt es eine Menge von Diensten verfügbar, aber die interessante Zeile ist :
Können Sie sehen, com.android.intern.- Telefonie.Ismen, so dass auf dieser link wählen Sie Ihre android-version (Wechsel-Zweig), dann navigieren Sie zu :
telephony/java/com/android/internal/telephony
und öffnenIsms.aidl
Für den rest nehme ich die android Pie (android 9) Datei (link).
Auf der Linie Eins hundert fünf und achtzig wir haben :
Hinweis:, bevor android 5 die Methode ist benannt
sendText(...)
.Es ist das 7. Erklärung der interface-ISMEN . Also unsere option zum senden einer sms die Nummer 7. Auf der Oberseite der declaratio es ist die Erklärung der Argumente. Hier eine kurze version:
-> Suchen Sie nach Ihrem Paket-Namen :
Entdecken Sie Ihre app-Datei oder download-Paket Namens-Viewer auf google play, finden Sie die Nachricht-Anwendung und kopieren Sie den Namen (com.android,...)
-> Finden Sie Ihre smsc :
In Ihrer Anwendung -> Einstellungen -> SMSC-oder Service-Center oder SMS-zentrale usw., kopieren Sie die Anzahl-Anzeige (NICHT ÄNDERN)
Kurz vor Ende, im Dienste der strings werden deklariert, indem s16 und Ganzzahlen und PendingIntent mit i32.
Also für mein Beispiel haben wir :
Schließlich :
Android 5 und älter (hier android 4):
Android 5 und später (hier android 9):
-> Ein Beispiel in einer batch-Datei :
Senden.BVT für android 4 :
ausführen mit :
Nun sagen Sie mir, ob es funktioniert mit Ihrem android-version 🙂
Edit : Korrigiert mit Angaben Alex P.
FIRST_CALL_TRANSACTION
ist1
, also den richtigen code fürsendMultipartText
in Android 4.4.x wäre6
, nicht5
. Für einfachere Möglichkeit, um die Transaktion gelesenen codes ktnr74.blogspot.com/2014/09/...5
und alle anderen Parameter für diesendText()
Befehl - die richtige Verwendung für das versenden von einfachen Texten wie den ihrigen.adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "+1234567890" s16 "null" s16 "Hey\ you\ !" s16 "null" s16 "null"
für android 9. Android 7 versuchen mit...isms 7 i32 1 s16 "com.android.mms" s16...
subId
und"com.android.mms.service"
sollte geändert werden, um1
oder2
und"com.android.mms"
, als Sie erwähnt hatte, in den Kommentar.Stattdessen schreiben Sie Ihre eigenen intentservice, wie die folgenden.
Erstellen Sie einen Eintrag für die folgenden IntentService in Ihrem manifest.
Die Lösung unten funktioniert großartig für mich !
In Android 5.02 die option ist 12 und ich dachte, Sie könnte senden Sie null als die SMSC zu verwenden, die Standard, so senden einer SMS-gearbeitet mit :