我正在尝试制作一个关于短信的android应用程序。我从google上得到了一个源代码,运行良好。但是,它不适用于超过80字节的文字信息或彩信。似乎onReceive
方法无法捕获那些长文本消息。
我错过了什么还是犯了什么错误?
这是我添加的权限。
android.permission.READ_SMS,
android.permission.RECEIVE_SMS,
android.permission.SEND_SMS,
android.permission.WRITE_SMS,
android.permission.READ_PHONE_STATE,
android.permission.INTERNET,
android.permission.ACCESS_NETWORK_STATE,
android.permission.RECEIVE_MMS,
android.permission.WRITE_EXTERNAL_STORAGE
这是我的代码:
public class MySMSMonitor extends BroadcastReceiver {
private static String ACTIONNAME = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null
&& ACTIONNAME.compareToIgnoreCase(intent.getAction()) == 0) {
Object[] pdu = (Object[]) intent.getExtras().get("pdus");
SmsMessage[] msg = new SmsMessage[pdu.length];
for (int i = 0; i < msg.length; i++) {
msg[i] = SmsMessage.createFromPdu((byte[]) pdu[i]);
}
StringBuilder sb = new StringBuilder();
for(SmsMessage allMsg : msg) {
sb.append(allMsg.getDisplayOriginatingAddress() + "&");
sb.append(allMsg.getDisplayMessageBody() + "&");
sb.append(allMsg.getTimestampMillis() + "&");
}
android.util.Log.i("SMS monitor", "data received = " + sb.toString());
}
}
}
请给我一些建议。
最佳答案
我看不出你的代码有什么问题。
我实现了一个example receiver with progress dialog(查看压缩项目的注释)可以工作,并且可以在我的手机上接收超过80b的消息。我建议你看一下并与你的代码进行比较。