杭州阿里云代理商: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

相关推荐

  • 大连阿里云代理商:阿里云身份证实名认证

    阿里云代理商是指在阿里云官方授权下,代理销售阿里云产品和提供相关服务的合作伙伴。针对身份证实名认证,阿里云有一套完整的认证流程,以下是关于大连阿里云代理商身份证实名认证的步骤: 在阿里云官网上注册个人账号或者企业账号。 登录阿里云官网,进入账号管理页面。 在账号管理页面中,找到个人信息或者企业信息的入口。 根据要求填写真实的个人或者企业信息,并上传身份证(或…

    2023年12月25日
    46800
  • 衡阳阿里云代理商:阿里云云数据库RDS MySQL如何进行数据库优化和索引设计?

    阿里云云数据库RDS MySQL的数据库优化和索引设计是非常重要的,可以提高数据库的性能和响应速度。以下是一些数据库优化和索引设计的常用方法和步骤。 表结构设计优化:合理的表结构设计是数据库优化的基础。尽量避免使用大量的大字段,尽量将字段设计为合适的类型和长度。另外,合理选择主键和外键关系,以及合理划分表的范式,也是很重要的。 索引设计:合理的索引设计可以大…

    2023年11月14日
    49400
  • 阿里云国际站充值:阿里云 部署博客

    在阿里云国际站上充值并部署博客的步骤如下: 打开阿里云国际站网站,并登录您的账号。 在账号页面选择充值,并选择您希望充值的金额和支付方式进行支付。 充值完成后,进入阿里云国际站的控制台。 在控制台中选择您想要部署博客的产品,比如ECS服务器。 根据您的需求选择合适的配置,操作系统和地区等,并购买相应的服务。 在购买成功后,您将获得该产品的实例信息,您可以在控…

    2024年2月19日
    42800
  • 南漳阿里云代理商:阿里云CDN如何应对网络拥塞和链路故障?

    阿里云CDN采用了多项技术来应对网络拥塞和链路故障,保障用户访问网站和应用的稳定性和快速性。具体措施包括: 多节点部署:阿里云CDN在全球范围内部署了多个节点,可以就近接入用户,减少网络拥塞和链路故障对访问速度的影响。 流量调度:阿里云CDN采用智能负载均衡算法和多线路调度技术,能够动态调整流量分发的策略,避开拥塞的网络节点和故障的链路,保障用户访问速度和稳…

    2023年11月16日
    49400
  • 阿里云数据库入门

    阿里云数据库是一种云端数据库服务,为用户提供了一系列的数据库产品,包括关系型数据库、NoSQL数据库、时序数据库等。用户可以通过阿里云控制台、API或命令行工具等方式创建、管理和使用云数据库。 要入门阿里云数据库,可以按照以下步骤操作: 注册阿里云账号:如果还没有阿里云账号,需要先进行注册。注册完成后,登录阿里云控制台。 创建云数据库实例:在控制台上选择对应…

    2023年9月17日
    49200

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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