我正在使用端口在我的应用中发送数据消息。
我在发送数据消息时遇到问题(android中的sendDataMessage)。我的代码适用于MCI sim卡,我的意思是发送者和接收者都有MCI sim卡。
如果发件人有MCI且接收者有正确的Irancell SIM卡消息。
相反,如果发送者有Irancell sim并且接收者有MCI sim,则根本不会发送:(尽管在这种情况下,文本消息发送/接收正常工作,数据消息将无效)。
此外,当发送者和接收者拥有Irancell sims时,它可以正常工作。 请帮我解决这个问题。
我的清单代码:
<receiver android:name=".SmsListener">
<intent-filter android:priority="999">
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
<data android:scheme="sms" />
<data android:port="7442" />
</intent-filter>
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<meta-data android:name="port" android:value="7442" />
我的smsListener:
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "Yuhuuu", Toast.LENGTH_LONG).show();
MainActivity.smsReceived(true);
Bundle bundle = intent.getExtras();
String recMsgString = "";
String fromAddress = "";
SmsMessage recMsg = null;
byte[] data = null;
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdus.length; i++) {
recMsg = SmsMessage.createFromPdu((byte[]) pdus[i]);
try {
data = recMsg.getUserData();
} catch (Exception e) {
}
if (data != null) {
for (int index = 0; index < data.length; ++index) {
recMsgString += Character.toString((char) data[index]);
}
}
fromAddress = recMsg.getOriginatingAddress();
}
}
System.out.println(recMsgString + " ,this Has been Recieved from: " + fromAddress);
}
和我的DataMessage发件人代码:
String messageText = "some text";
short SMS_PORT = 7442;
SmsManager smsManager = SmsManager.getDefault();
String phoneNumber = "+98910*******";
smsManager.sendDataMessage(phoneNumber, null, shortValue, messageText, null, null);
}