要在Android上监听新短信,您可以按照以下步骤进行操作:
- 添加接收短信权限:首先,在您的Android应用清单文件(AndroidManifest.xml)中添加接收短信权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
- 创建BroadcastReceiver:创建一个继承自BroadcastReceiver的类,用于接收短信广播:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
// 处理收到的短信逻辑
Bundle bundle = intent.getExtras();
if (bundle != null) {
// 解析短信内容
Object[] pdus = (Object[]) bundle.get("pdus");
if (pdus != null) {
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String messageBody = smsMessage.getMessageBody();
String sender = smsMessage.getDisplayOriginatingAddress();
// 处理短信内容和发送者信息
}
}
}
}
}
}
- 注册广播接收器:在您的Android应用的活动或服务中,根据需要注册BroadcastReceiver来接收短信广播:
public class MainActivity extends AppCompatActivity {
private SMSReceiver smsReceiver;
private IntentFilter intentFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
smsReceiver = new SMSReceiver();
intentFilter = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
registerReceiver(smsReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(smsReceiver);
}
}
请注意,您还可以在接收到新短信时添加其他逻辑,例如将短信内容存储到数据库或显示通知等。此外,需要确保在AndroidManifest.xml文件中声明相应的权限和接收器。
要在 Android 上监听新短信,您可以使用 BroadcastReceiver 和 ContentObserver 组合来实现。下面是具体步骤:
-
创建一个继承自 BroadcastReceiver 的类,用于接收短信广播。
public class SMSReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 接收到短信后的处理逻辑 } }
-
在 AndroidManifest.xml 文件中注册 BroadcastReceiver。
<receiver android:name=".SMSReceiver" android:exported="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
-
在 BroadcastReceiver 中处理接收到的短信。可以通过 SmsMessage 的 getOriginatingAddress 方法获取发送者的电话号码,通过 getMessageBody 方法获取短信内容。
@Override public void onReceive(Context context, Intent intent) { if (Objects.equals(intent.getAction(), "android.provider.Telephony.SMS_RECEIVED")) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus != null) { for (Object pdu : pdus) { SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu); String sender = smsMessage.getOriginatingAddress(); String message = smsMessage.getMessageBody(); // 在这里处理短信内容 } } } } }
-
如果您还想监听短信的发送状态,可以使用 ContentObserver 监听 “content://sms” URI,以便在短信数据库发生变化时收到通知。
ContentResolver contentResolver = context.getContentResolver(); ContentObserver observer = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); if (Objects.equals(uri, Uri.parse("content://sms"))) { // 获取最新的短信状态 } } }; contentResolver.registerContentObserver(Uri.parse("content://sms"), true, observer);
通过以上步骤,您可以在 Android 上监听新短信的到达和发送状态的变化。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/133408.html