当前位置: 首页 > 面试题库 >

阅读并显示传入的消息文本android

高恺
2023-03-14
问题内容

我是android开发的新手,正在开发小型android应用程序。在我的应用程序中,我想检索新出现的短信并向用户显示此消息。我的代码看起来像

// HellowordActivity.java
package com.example.helloword;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class HellowordActivity extends BroadcastReceiver
{
    public void onReceive(Context context, Intent intent)
    {
    Bundle myBundle = intent.getExtras();
    SmsMessage [] messages = null;
    String strMessage = "";

    if (myBundle != null)
    {
        Object [] pdus = (Object[]) myBundle.get("pdus");
        messages = new SmsMessage[pdus.length];

        for (int i = 0; i < messages.length; i++)
        {
            messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            strMessage += "SMS From: " + messages[i].getOriginatingAddress();
            strMessage += " : ";
            strMessage += messages[i].getMessageBody().toString();
            strMessage += "\n";
        }
         // Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show();

        Intent _intent = new Intent(context, PopupActivity.class);
        _intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        _intent.putExtra("strMessage", strMessage);
        startActivity(_intent);
       }
    }

  }

我在Android Manifest.xml中添加了接收者和权限

    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

      <receiver android:name=".HellowordActivity" >
                <intent-filter > 
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
                </intent-filter> 
        </receiver> 
<activity android:name=".PopupActivity" android:launchMode="singleTop" />

我在布局部分没有做任何事情。当新消息出现时,我想要作为输出;消息文本通过简单的弹出窗口显示给用户。需要帮助..谢谢…


问题答案:

试试这个对我有用的东西,您将看到祝酒词和收到的消息内容:

package com.example.a;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

    public class SMSBroadcastReceiver 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) {
                 Log.i(TAG, "Intent recieved: " + intent.getAction());

                    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) {
                                Toast.makeText(context, "Message recieved: " + messages[0].getMessageBody(), 7000).show();
                            }
                        }
                    }
               }
        }

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.a"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.HARDWARE_TEST"/>


    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <receiver android:name=".SMSBroadcastReceiver" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" >
                </action>
            </intent-filter>
        </receiver>
    </application>

</manifest>

使用DDMS通过Telnet将短信发送到仿真器



 类似资料:
  • 我正试图让Jersey支持GSON,为此我了解到我需要实现一个自定义的MessageBodyWriter和MessageBodyReader。 现在我的问题是我找不到这两个接口的任何明确定义。 从文档中: 支持将Java类型转换为流的提供程序的契约。要添加MessageBodyWriter实现,请使用@Provider注释实现类。MessageBodyWriter实现可以使用Produces注释以

  • 本文向大家介绍opencv 基本阅读和图像显示,包括了opencv 基本阅读和图像显示的使用技巧和注意事项,需要的朋友参考一下 示例 要控制屏幕上显示窗口的大小,请在命令之前添加以下命令cv2.imshow: 有关更多详细信息,请参见openCV文档

  • 我对JavaFX和JavaFX Scene Builder是新手,几个星期以来一直在研究并试图弄清楚如何简单地从文本文件中读取并在文本中显示其内容。我的controller类中有一个很好的文件读取功能,但我不知道如何将文本文件显示到fxml文档中的文本区域。我已经学会了如何单击按钮并使文件显示在文本区域中,但我希望GUI加载后立即在文本区域中显示内容。如果任何人有一个想法如何去做这件事,你的帮助将

  • 所以我做了一个机器人,它会在一个频道里向新成员发送欢迎信息。我的代码应该工作,因为它没有在我的控制台上发送任何错误,但是我的机器人没有发送欢迎消息。 我尝试了很多东西: > 使嵌入对象成为对象(nope) 做了4个长的不同代码(都不工作) 我在用discord.js@v12 代码:

  • 问题内容: 我正在使用Paho发送和接收mqtt消息。到目前为止,发送消息一直没有问题,我正在使用mosquitto接收消息。 现在,我想使用Java客户端读取消息,并且注意到关于接收消息的文档越来越少。 我实现了MqttCallback接口,但仍然无法弄清楚如何阅读已订阅的主题的消息。 到目前为止,这是我的源代码,我可以使用mosquitto_sub读取消息。 问题答案: 您将在代理有时间将消息

  • 我从几天以来一直对我的问题感到震惊。实际上,我想要做的是创建一个通知服务,即使用户不在应用程序中,也为用户提供警报。并且该服务应每5分钟检查传入消息。并且通知应该与通知抽屉中的通知收件箱样式完全相同。我需要通过单击通知来调用特定的活动。有人能建议我怎么做吗?谢谢你的帮助....