gpt4 book ai didi

android - 收到的短信未在 TextView 中完全显示

转载 作者:行者123 更新时间:2023-11-29 20:54:09 25 4
gpt4 key购买 nike

我一直在尝试创建一个简单的应用程序,它将 SMS 发送到信息网关,并且还能够在应用程序内显示收到的关于所请求信息的 SMS。

第一部分我做对了,但是后半部分缺少一些东西,即接收短信。我已经成功地能够使用 mThis 访问另一个类的 TextView,但我无法获得完整的消息,只能获得它的一小段。

下面放几张截图让大家明白:

Here, I'm doing a Wikipedia Search for MJ, and once that is done, a message of the text-version of the Wiki Article is sent to me.

在这里,我正在对 MJ 进行维基百科搜索,完成后,会向我发送维基文章文本版本的消息。

This is the message I got from the gateway, a short and sweet article about my favorite artist.

这是我从网关收到的消息,一篇关于我最喜欢的艺术家的简短而甜蜜的文章。

But this is what I get... a shortened and sometimes incomplete version of the whole message, which doesn't make sense for some searches.

但这就是我得到的...整个消息的缩短版本,有时甚至是不完整的版本,这对某些搜索没有意义。

这是我在 ReceiveMessage.java 上的代码,它是允许我接收和显示 SMS 的主要类文件。

package com.phoenix.omnisurf;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class ReceiveMessage extends BroadcastReceiver {

private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
Surf.mThis.messageContainer.setText(messages[0].getDisplayMessageBody());
}
}
}
}
}

这是我的 activity_surf.xml 包含的内容,主布局具有显示接收到的消息的 messageContainer TextView。 (只是一个 fragment )

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/messageContainer"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:padding="20dp"
android:layout_below="@+id/btnSurf" />

请帮我在应用程序上显示完整的消息,我将不胜感激。非常感谢!

最佳答案

针对原发帖者自己的回答,少了一个for循环。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class ReceiveMessage extends BroadcastReceiver {

private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
private String messageBody = "";

@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {

messageBody = "";

Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];

for (int i = 0; i < pdus.length; i++) {
messageBody += SmsMessage.createFromPdu((byte[])pdus[i]).getDisplayMessageBody();
}

Surf.mThis.messageContainer.setText(messageBody);
}
}
}
}

关于android - 收到的短信未在 TextView 中完全显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com