Android读取短信的方法可以通过使用 BroadcastReceiver 和 ContentResolver 两种方式来实现。
1. 使用 BroadcastReceiver:
创建一个继承自 BroadcastReceiver 的类,重写 onReceive 方法,在方法中获取短信内容。
```java
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");
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String messageBody = smsMessage.getMessageBody();
String sender = smsMessage.getDisplayOriginatingAddress();
// 在这里处理短信内容
}
}
}
}
}
```
在 AndroidManifest.xml 文件中注册 BroadcastReceiver:
```xml
```
2. 使用 ContentResolver:
使用 ContentResolver 查询短信内容。
```java
Uri uri = Uri.parse("content://sms/inbox");
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
do {
String messageBody = cursor.getString(cursor.getColumnIndex("body"));
String sender = cursor.getString(cursor.getColumnIndex("address"));
// 在这里处理短信内容
} while (cursor.moveToNext());
cursor.close();
}
```
请注意,为了使用 ContentResolver,需要在 AndroidManifest.xml 文件中申请读取短信的权限:
```xml
```