次のコード スニペットを使用して、Android でデータ SMS を送受信できます。
SmsManager manager = SmsManager.getDefault();
manager.sendDataMessage(phonenumber, null, (short) PORT, data,piSend, piDelivered);
ここで、送信側の PORT=8091 です。レシーバーの場合、ブロードキャスト インテントはマニフェスト ファイルで次のように定義されます。
<receiver android:name=".DataSMSReceiver">
<intent-filter>
<action android:name="android.intent.action.DATA_SMS_RECEIVED"/>
<data android:port="8091"/>
<data android:scheme="sms"/>
</intent-filter>
</receiver>
その後、DataSMSReceiver クラスで受信されます。
ただし、テキスト SMS の場合と同様に、ブロードキャスト レシーバーを動的に登録する必要があります。
protected static final String SMS_RECEIVED="android.provider.Telephony.SMS_RECEIVED";
getApplicationContext().registerReceiver(mReceiver, new IntentFilter(SMS_RECEIVED));
IntentFilter でポートを指定してレシーバーを動的に登録するにはどうすればよいですか?
前もって感謝します。