2012-05-09 30 views
1

Iは、次のコードスニペットを使用して、Android上でデータSMSを送受信することができる:送信側のポート= 8091バイナリSMS:動的受信登録

SmsManager manager = SmsManager.getDefault(); 
manager.sendDataMessage(phonenumber, null, (short) PORT, data,piSend, piDelivered); 

を。また、受信者の場合、ブロードキャストインテントは、マニフェストファイルで次のように定義されます。

<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でポートを指定することができますか?

ありがとうございます。

答えて

1

addDataAuthority(String, String)を使用する必要があります。たとえば:

IntentFilter filter = new IntentFilter(SMS_RECIEVED); 
filter.addDataAuthority("*", "8091"); 
filter.addDataScheme("sms"); 

//use the filter, etc... 
+0

ありがとうございました。今すぐ動作します。 –

1

は、私は簡単にそれを見つけることがなかったので、私はここに投稿:

Telephony.Sms.Intents.DATA_SMS_RECEIVED_ACTION

文字列 "android.provider.Telephony.SMS_RECEIVED" としてTelephony.Sms.Intentsクラスの定数として求めることができます

関連する問題