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

相关推荐

  • 淄博阿里云代理商:阿里云完全初始化

    淄博阿里云代理商是指在淄博地区代理销售阿里云产品和服务的公司或个人。阿里云完全初始化可以指阿里云产品在淄博地区的全面推广和市场开发,以及与当地客户的合作和支持工作。 阿里云完全初始化的主要内容包括: 产品推广:代理商通过各种渠道和方式宣传阿里云产品和服务,向淄博地区的企业和个人客户介绍阿里云的优势和功能,提供咨询和解答相关问题。 市场开发:代理商与当地的企业…

    2024年2月14日
    14000
  • 香港阿里云代理商:android_java_shell

    Android Java Shell指的是在Android系统上使用Java语言编写的一种Shell(命令行)程序。通过Java Shell,可以在Android设备上执行一系列命令,包括文件操作、系统设置、网络请求等。 作为香港阿里云代理商,可能会使用Android Java Shell来管理和配置在阿里云上运行的Android应用。例如,可以使用Java…

    2024年1月12日
    10700
  • 苏州阿里云代理商:安卓系统登录网络连接失败怎么办

    如果您在安卓系统上登录阿里云时遇到网络连接失败的问题,您可以尝试以下解决方法: 检查网络连接:确保您的设备已连接到可用的Wi-Fi网络或移动数据网络。您可以尝试连接其他网络或重新启动您的路由器或移动设备,以尝试解决网络连接问题。 检查防火墙和代理设置:某些防火墙或代理设置可能会阻止您的设备与阿里云服务器建立连接。您可以在安卓系统的网络设置中检查是否启用了代理…

    2024年2月5日
    10300
  • 哈密阿里云企业邮箱代理商:阿里云购买域名流程图

    阿里云企业邮箱代理商:阿里云购买域名流程图 随着企业的日益壮大,邮箱的使用越来越普遍。企业邮箱是指以企业域名为后缀的邮箱,比如XXX@company.com。阿里云作为众所周知的云计算服务提供商,其企业邮箱和企业邮箱代理商也备受瞩目。 要想拥有自己的企业邮箱,第一步就需要购买一个域名。下面我们来看一下阿里云购买域名的流程: 阿里云购买域名流程图 阿里云企业邮…

    2024年3月14日
    11700
  • 阿里云云应用架构部署与运维

    阿里云vpc 内部怎么设置架构 修改实例VPC属性   描述   修改云服务器实例的 VPC 属性。   指定 VSwitchId 修改 VPC 属性时,指定的 VSwitchId,必须属于当前的专有网络。   指定实例的当前交换机和新的交换机必须要属于同一个可用区。   指定 VSwitchId 不指定 PrivateIpAddress 时,系统自动为云服…

    2023年8月29日
    11400

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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