3

私の問題は、特定のクラスの SMS メッセージを特定のエンコーディングで送信したいということです。(クラス 0 および 7 ビット エンコーディング)。

Android.Telephony.SmsManager と SmsMessage をチェックするとき、できることはそれほど多くありません。SmsManager は、SendTextMessage と SendDataMessage の 2 つの関数を提供します。最初の方法は、通常の SMS を誰かに送信したいだけの場合にうまく機能します。したがって、 SendDataMessage は、何らかの形で使用する必要がある関数だと思います。しかし、私はそれを使用する方法を理解することはできません。そして、この関数を使用している人の例は (私が見つけることができる) Web 上にはないようです。

誰かが私を助ける何かを知っていますか? :-) Class0 7 ビットでエンコードされた SMS を送信する方法、または SendDataMessage 関数を適切に使用する方法。

4

1 に答える 1

6

このsendDataMessage関数は、独自のユーザー データ ヘッダー を追加します。このUDH情報は、アプリケーション ポート番号と、クラスのない 8 ビット データの TP-Data-Coding-Scheme で構成されます0x04( SmsMessageコード ベースにあります) 。

このSendTextMessage関数は、GSM7packed エンコーディングと、0x00非圧縮、デフォルト (7 ビット) エンコーディング、クラスなしの TP-Data-Encoding-Scheme を使用してメッセージを送信します。GSM 03.38 仕様による

クラス 0、7 ビット データの場合0x10、TP-Data-Encoding-Scheme バイト位置で値を探します。そのためには、送信されるすべての PDU を制御する必要があります。現在、これは公開 Android API ではサポートされていません。ただし、内部 API のリフレクションを介して行うことができます (ただし、推奨されません) 。

Android で SMS raw pdu を確認する

于 2011-02-20T03:48:08.070 に答える