短縮版 :
Android 5 以前 (ここでは Android 4):
adb shell service call isms 5 s16 "com.android.mms" s16 "+01234567890" s16 "+01SMSCNUMBER" s16 "Hello world !" i32 0 i32 0
Android 5 以降 (ここでは Android 9):
adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "+1234567890" s16 "null" s16 "Hey\ you\ !" s16 "null" s16 "null"
ismsのメソッド番号(上記の5と7)はandroidのバージョンで変わる可能性があります。それを理解するために完全な説明を読んでください。
すべての Android バージョンの完全な説明:
はい、存在します!これらの入力イベントはスリープ モードでブロックされるため、このコマンドではできません。この解決策は、お使いの Android のバージョンに依存するため、ほぼすべてのバージョンについて説明します ...
まず、次を実行してサービス isms があるかどうかを確認します。
adb shell service check isms
Service isms: found
答えは見つかった、よし、動き続けよう。サービスイズムにはさまざまな「オプション」があり、構文は次のとおりです。
service call name_service option args
サービス名は、次のように入力して見つけることができます。
adb shell service list
利用可能な多くのサービスが表示されますが、興味深い行は次のとおりです。
5 isms: [com.android.internal.telephony.ISms]
com.android.internal.telephony.Isms が表示されるので、このリンクで Android のバージョンを (ブランチを変更して) 選択し、次に : に移動しtelephony/java/com/android/internal/telephony
て開きます。Isms.aidl
残りについては、android Pie (android 9) ファイル (リンク) を使用します。
185行目には、次のものがあります。
void sendTextForSubscriberWithSelfPermissions(...)
注: Android 5 より前では、メソッドの名前はsendText(...)
.
これは、インターフェース ISMS の 7 番目の宣言です。したがって、SMS を送信するオプションは 7 です。宣言の上部には、引数の説明があります。ここに短いバージョンがあります:
- subId : Android 5 以降、Android のバージョンに応じて 0、1、または 2 を使用する SIM カード (例: Android 9 の場合は 0-1、Android 8 の場合は 1-2)
- callingPkg : SMS を送信するパッケージの名前 (見つけ方は後で説明します)
- destinationAdress : メッセージ受信者の電話番号
- scAddress : smsc は android 5 以前でのみ必要です (後で説明します)
- パーツ:メッセージ!
- sendIntends と deliveryIntents : 気にしない
-> パッケージ名を見つける:
アプリ ファイルを調べるか、Google Play で Package Name Viewer をダウンロードし、メッセージ アプリケーションを見つけて名前 (com.android...) をコピーします。
-> smsc を見つけます:
アプリケーションで -> 設定 -> SMSC またはサービス センターまたはメッセージ センターなどで、番号表示をコピーします (変更しないでください)。
終了する直前に、サービスで文字列が s16と整数で宣言され、 i32 でPendingIntent が宣言されます。
したがって、私の例では次のようになります。
- サブ ID : 0
- callingPkg : com.android.mms
- 対象番号:+01234567890
- SMSC : +01000000000
- 私のテキスト: Hello world !
- sendIntends と deliveryIntents は気にしないので、0 を入れてデフォルト値に設定します。
ついに :
Android 5 以前 (ここでは Android 4):
adb shell service call isms 5 s16 "com.android.mms" s16 "+01234567890" s16 "+01000000000" s16 "Hello world !" i32 0 i32 0
Android 5 以降 (ここでは Android 9):
adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "+1234567890" s16 "null" s16 "'Hey you !'" s16 "null" s16 "null"
-> バッチ ファイルの例:
Android 4 の send.bat :
echo off
set num=%1
shift
for /f "tokens=1,* delims= " %%a in ("%*") do set ALL_BUT_FIRST=%%b
echo %ALL_BUT_FIRST%
adb shell service call isms 5 s16 "com.android.mms" s16 "%num%" s16 "+01000000000" s16 "%ALL_BUT_FIRST%" i32 0 i32 0
で実行:
send.bat +01234567890 Hey you !
あなたのAndroidバージョンで動作するかどうか教えてください:)
編集 :アレックス P.
から提供された情報で修正編集 2:ニールから提供された情報で修正