以下是一个基本的 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()方法:
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