杭州阿里云代理商:Android 监听短信的源码

以下是一个基本的 Android 监听短信的源码示例:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;

public class SmsReceiver extends BroadcastReceiver {

    private static final String TAG = "SmsReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
            Object[] pdus = (Object[]) intent.getExtras().get("pdus");
            if (pdus != null) {
                for (Object pdu : pdus) {
                    SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
                    String sender = smsMessage.getOriginatingAddress();
                    String message = smsMessage.getMessageBody();

                    Log.d(TAG, "Received SMS: From " + sender + ", Message: " + message);
                    // 在这里进行你的业务逻辑处理
                }
            }
        }
    }
}

你需要在 AndroidManifest.xml 文件中声明 BroadcastReceiver:

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

<application
    ...
    <receiver android:name=".SmsReceiver">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
    ...
</application>

记得在 AndroidManifest.xml 文件中添加 RECEIVE_SMS 权限。

这样,当手机接收到新的短信时,SmsReceiver 的 onReceive 方法会被调用,并在日志中打印短信发送者的号码和短信内容。你可以在这个方法中添加自己的业务逻辑来处理接收到的短信。

以下是一个简单的Android监听短信的代码示例:

首先,在Manifest文件中添加以下权限和接收器声明:

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

<application>
    ...
    <receiver android:name=".SmsReceiver">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
    ...
</application>

接下来,创建一个名为SmsReceiver的广播接收器类,并实现onReceive()方法:

杭州阿里云代理商:Android 监听短信的源码
public class SmsReceiver extends BroadcastReceiver {
    private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
            Bundle bundle = intent.getExtras();
            if (bundle != null) {
                Object[] pdus = (Object[]) bundle.get("pdus");
                if (pdus != null && pdus.length > 0) {
                    SmsMessage[] messages = new SmsMessage[pdus.length];
                    for (int i = 0; i < pdus.length; i++) {
                        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    }
                    String messageBody = messages[0].getMessageBody(); // 获取短信内容
                    String sender = messages[0].getOriginatingAddress(); // 获取短信发送者的手机号码
                    
                    // 在这里可以对接收到的短信进行处理
                    // TODO: 进行你的操作
                    
                    // 广播接收器中不建议做耗时操作,可以启动Service来处理更复杂的逻辑
                }
            }
        }
    }
}

注意:广播接收器中的代码应该尽可能简洁且高效,避免引发ANR(Application Not Responding)的情况。

需要记得自行处理Android手机系统版本兼容性问题,例如在Android 6.0及以上的版本中需要动态请求RECEIVE_SMS权限。

希望这段代码能帮到你,如果有其他问题,请随时追问。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/142633.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年2月10日 11:18
下一篇 2024年2月10日 11:30

相关推荐

  • 济宁阿里云代理商:asp网站迁移 odbc

    在济宁阿里云代理商进行ASP网站迁移ODBC时,你可以遵循以下步骤: 确保源网站的旧服务器与目标阿里云服务器之间建立了网络连接。 在目标阿里云服务器上安装相应的ODBC驱动程序。你可以从驱动程序的官方网站下载并按照说明进行安装。 创建一个ODBC数据源名称(DSN)。打开“控制面板” -> “ODBC数据源” -> “系统DNS” 进行创建。选择…

    2024年1月31日
    1.4K00
  • 阿里云物联网什么意思

    什么是物联网,云计算 物联网顾名思义,物联网就是“物物相连的互联网”。云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。 什么是云计算?物联网和大数据 1、云计算一般来讲云计算,云端即是网络资源,从云端来按需获取所需要的服务内容就是云计算。云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得…

    2023年8月28日
    40000
  • 南昌阿里云代理商:android音量监控

    Android音量监控可以采取以下几种方式: 使用AudioManager类监控音量变化:通过调用AudioManager类的方法,可以获取当前音量信息,如getStreamVolume()获取具体音量值。可以通过监听音量变化的广播来实时监控音量的变化。 注册音量变化监听器:可以通过注册音量变化的BroadcastReceiver来实现实时监控音量的变化。在…

    2024年2月4日
    46600
  • 阿里云盘资源怎么转存到百度云盘

    资源发送到百度云要怎么做? 登录之后上传 资料就算是存在了云盘里了 怎样把网上的文件下载到百度云盘? 可以使用百度的离线下载功能,具体离线下载使用方法请参考百度云官网的帮助中心(WEB端第15条和16条):http://pan.baidu.com/disk/help 如何将网络文件转存入百度网盘 利用360云盘的离线下载功能可以将百度网盘中的文件,在不下载到…

    2023年8月26日
    39000
  • 温州阿里云代理商:api-hd

    温州阿里云代理商:api-hd 阿里云优势 阿里云作为国内领先的云计算服务提供商,拥有丰富的产品线和强大的技术支持,以及广泛的全球网络覆盖。以下是阿里云的主要优势: 灵活可靠的基础设施 阿里云提供高效、稳定的服务器和存储设备,确保用户的数据安全且可靠。同时,用户可以根据自身需求选择弹性计算资源,实现按需分配和支付。 多样化的产品和服务 阿里云拥有丰富多样的产…

    2024年1月21日
    38000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/