getDisplayMessageBody() 抛出了异常

发布于 2021-11-07 05:05:01 字数 1175 浏览 831 评论 2

SmsMessage[] messages = new SmsMessage[myOBJpdus.length];
if (messages.length < 1 )
{
	LogText(context,"ERR: messages.length=" + messages.length );
	return;
}
LogText(context,"DEBUG: messages.length=" + messages.length );
for (int i = 0; i < messages.length; i++) {
	// 通过SmsMessage.createFromPdu()方式取出短信文字
	messages[i] = SmsMessage
			.createFromPdu((byte[]) myOBJpdus[i]);
	if (messages[i] == null ){
		LogText(context,"ERR: messages[" + i + "] is null" );
		return;
	}
}

int i = 0;
for (SmsMessage currentMessage : messages) {
	if ( currentMessage == null) {
		LogText(context,"msg[ " + i +"] null");
		return;
	} else {
		String msg =  currentMessage.getDisplayMessageBody();
		//与  currentMessage.getMessageBody() 有什么区别?
		if ( msg == null){
			LogText(context,"ERR: msg[" + i +"].Body() null");
			return;
		} else {
			LogText(context,"DEBUG: msg[" + i +"].Body()=" + msg );
			sb.append(currentMessage.getDisplayMessageBody());// 短信内容
		}
	}
	i++;
}

接收短信模块代码,但其中  getDisplayMessageBody() 遇到长短信,会抛出异常。

函数说明并没有提到会抛出异常,而是说没有内容时,输出 null。

怎样才能避免抛出异常啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

把昨日还给我 2021-11-12 16:51:12

在网上找到这么一段,不知道能否帮到你

private Uri storeMessage(Context context, SmsMessage[] msgs, int error) {
        SmsMessage sms = msgs[0];

        // Store the message in the content provider.
        ContentValues values = extractContentValues(sms);
        values.put(Sms.ERROR_CODE, error);
        int pduCount = msgs.length;

        if (pduCount == 1) {//一条
            // There is only one part, so grab the body directly.
            values.put(Inbox.BODY, sms.getDisplayMessageBody());
        } else {//多条
            // Build up the body from the parts.
            StringBuilder body = new StringBuilder();
            for (int i = 0; i < pduCount; i++) {
                sms = msgs[i];
                body.append(sms.getDisplayMessageBody());
            }
            values.put(Inbox.BODY, body.toString());
        }

        // Make sure we've got a thread id so after the insert we'll be able to delete
        // excess messages.
        Long threadId = values.getAsLong(Sms.THREAD_ID);
        String address = values.getAsString(Sms.ADDRESS);
        Contact cacheContact = Contact.get(address,true);
        if (cacheContact != null) {
            address = cacheContact.getNumber();
        }

        if (((threadId == null) || (threadId == 0)) && (address != null)) {
            threadId = Threads.getOrCreateThreadId(context, address);
            values.put(Sms.THREAD_ID, threadId);
        }

        ContentResolver resolver = context.getContentResolver();

        Uri insertedUri = SqliteWrapper.insert(context, resolver, Inbox.CONTENT_URI, values);

        // Now make sure we're not over the limit in stored messages
        Recycler.getSmsRecycler().deleteOldMessagesByThreadId(getApplicationContext(), threadId);

        return insertedUri;
    }
回忆凄美了谁 2021-11-12 11:38:22

这东西是哪个项目的?是 Android ?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文