android - 如何在 Android 中捕获超过 80 字节的短信?

标签 android sms broadcastreceiver message mms

我正在尝试制作一个关于短信的 Android 应用。我通过谷歌搜索获得了源代码,它工作正常。但是,它不适用于超过 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 的消息。我建议您查看它并与您的代码进行比较。

关于android - 如何在 Android 中捕获超过 80 字节的短信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12032688/

相关文章:

android - "Real"短信接收测试

android - 收到短信时联系人姓名未显示在通知中

android - 如何进行大于或小于 "Safe Casts"的比较

android - 检查蓝牙配对

android - 从 SIM 卡获取短信

iphone - iOS 6.0 上的 MFMessageComposeController 中 UIButton 为 nil

android - 广播接收器在 oreo 和 pie android 中不起作用

java - 无法使字段私有(private)最终 java.lang.String java.io.File.path 可访问 Qt Android

Android ListView 单击上下文菜单

java - j2me 短信接收在模拟器中工作但在诺基亚 n91 中不起作用?