android 接收短信广播_智能设备如何接收广播消息?

智能设备通过注册广播接收器,监听系统发出的广播消息,如短信、电话等,实现接收广播功能。
android 接收短信广播_智能设备如何接收广播消息?

Android 接收短信广播

在 Android 系统中,可以通过注册广播接收器来接收短信广播,短信广播是一种系统级别的广播,当有新的短信到达时,系统会发送一个短信广播通知应用程序,下面将详细介绍如何接收短信广播。

1、注册广播接收器

要接收短信广播,首先需要在应用程序中注册一个广播接收器,可以使用以下代码在 AndroidManifest.xml 文件中注册:

<receiver android:name=".SmsReceiver">
    <intentfilter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intentfilter>
</receiver>

上述代码中,SmsReceiver 是自定义的广播接收器类名,需要根据自己的实际情况进行替换。android.provider.Telephony.SMS_RECEIVED 是短信广播的 Action 字符串。

android 接收短信广播_智能设备如何接收广播消息?

2、创建广播接收器类

接下来,需要创建一个继承自 BroadcastReceiver 的类,用于处理接收到的短信广播,以下是一个简单的示例:

public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            for (Object pdu : pdus) {
                SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
                String sender = message.getDisplayOriginatingAddress();
                String body = message.getDisplayMessageBody();
                // 在这里可以对收到的短信进行处理,例如显示在界面上或者存储到数据库中
            }
        }
    }
}

上述代码中,onReceive() 方法会在接收到短信广播时被调用,通过 intent.getExtras() 获取到包含短信信息的 Bundle 对象,然后从中提取出短信内容和发送者等信息,可以根据实际需求对短信进行处理。

3、动态注册广播接收器(可选)

如果只在应用程序运行时接收短信广播,可以在需要的时候动态注册广播接收器,使用以下代码进行注册:

IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(smsReceiver, filter);
android 接收短信广播_智能设备如何接收广播消息?

上述代码中,smsReceiver 是之前创建的 SmsReceiver 实例,注册后,应用程序将会监听短信广播并触发相应的处理逻辑,如果不再需要接收短信广播,可以使用以下代码进行注销:

unregisterReceiver(smsReceiver);

4、权限设置(可选)

在 AndroidManifest.xml 文件中,还需要添加以下权限声明:

<a href="https://developer.android.com/reference/android/Manifest.permission#READ_SMS"><code>READ_SMS</code></a>

该权限允许应用程序读取收到的短信内容,如果没有添加该权限,可能会导致无法正常读取短信内容,请注意,从 Android 6.0(API 级别 23)开始,用户必须在安装应用程序时授予该权限,建议在运行时请求该权限,可以使用以下代码进行权限请求:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_SMS}, PERMISSION_REQUEST_CODE);
} else {
    // 已经拥有权限,可以进行相关操作
}

PERMISSION_REQUEST_CODE 是一个自定义的请求码,用于在权限请求结果回调中区分不同的请求,请确保在合适的时机检查和请求权限。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/537785.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年6月16日 06:30
下一篇 2024年6月16日 06:38

发表回复

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

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入