我有兩個應用程序與兩個不同的數據短信廣播,我想在他們兩個接收數據短信。對於我在應用1中創建廣播中的每個應用如何在兩個不同的端口接收數據短信
接收器之一:
<receiver android:name=".SMSReceiver" >
<intent-filter android:priority="10" >
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="5555" />
</intent-filter>
</receiver>
接收器兩個應用程序二:
<receiver android:name=".SMSReceiver1" >
<intent-filter android:priority="10" >
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="8901" />
</intent-filter>
</receiver>
現在的情況是這樣的,短信在第一隻收到我已經嘗試了相同的端口,類名和不同的。但問題沒有解決,我該如何解決? 這裏是我的廣播接收器類
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle myBundle = intent.getExtras();
SmsMessage[] messages = null;
String strMessage = "";
byte[] data = null;
if (myBundle != null) {
Object[] pdus = (Object[]) myBundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
phoneNo = messages[i].getOriginatingAddress();
try {
data = messages[i].getUserData();
} catch (Exception e) {
}
if (data != null) {
for (int index = 0; index < data.length; ++index) {
strMessage += Character.toString((char) data[index]);
}
}
}
message = strMessage;
System.out.println("message received: " + message);
}
}
我發送消息
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendDataMessage(myNumber, null,(short)8901, sms.getBytes(), null, null);
這是一個古老的線程,但我有一個有關數據短信的問題。你能告訴我他們究竟是什麼,並且可以被防火牆阻擋,因爲考慮到了端口? – user1437328