私はアンドロイドAPIを通してサイレントSMSを検出する方法があるかどうかを理解しようとしています。また、キックのためだけに、デバイスから送信できますか?
4 に答える
サイレントSMSは、TP DCS(データコーディングスキーム)フィールドのビット4〜7を1100(メッセージ待機表示グループ:メッセージの破棄)に設定することにより、携帯電話事業者(または潜在的に侵入者)によって開始される場合があります-この記事を参照してくださいが、AFAIKこれはAndroidSDKには反映されていません。
クラス0はサイレントSMSとは関係ありません。
3GPP 23.038は、実際には「モバイルで終了したメッセージがクラス0であり、MSにショートメッセージを表示する機能がある場合、MSはメッセージをすぐに表示し、SCに確認応答を送信する」と述べています。
さて、私はこれを理解したと思います。telephony.SmsMessageクラスにはgetMessageClass()というメソッドがあります。クラス0はサイレントSMSを示します。それらを送ることに関しては、それはまだ進行中の作業です
アプリケーションをテストしている場合...
次に、SMS用のエミュレータツールを使用することをお勧めします。
Windowsマシンの場合-
- CMDに移動
- 「telnetlocalhost5554」と入力します(これが唯一のアクティブなエミュレーターであると想定します。さらにエミュレーターがある場合は、対応するポート番号を入力します)
- SMS機能を使用する(gsm通話などのオプションが他にもあります)
telnetセッションでhelpと入力することもできます。これにより、実行可能なすべてのことが一覧表示されます。
Android SDKは、一般的なSMS受信ブロードキャストレシーバー機能のサブセットとして、データSMSをサポートしています。
<uses-permission android:name="android.permission.RECEIVE_SMS" ></uses-permission>
インテントフィルターを指定し、サイレントSMSのポートと一致する指定されたポートでリッスンする必要があります。
<intent-filter android:priority="10" >
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="16001" />
</intent-filter>