我正在尝试制作一个关于短信的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的消息。我建议你看一下并与你的代码进行比较。

10-06 14:18