android 读取短信格式,获取Android手机中所有短信的实现代码
时间: 2024-05-13 16:16:30 浏览: 14
以下是获取Android手机中所有短信的实现代码。需要注意的是,需要在AndroidManifest.xml文件中添加读取短信的权限。
```java
import android.Manifest;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Telephony;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final int PERMISSIONS_REQUEST_READ_SMS = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_SMS},
PERMISSIONS_REQUEST_READ_SMS);
} else {
readSms();
}
}
private void readSms() {
Uri smsUri = Telephony.Sms.CONTENT_URI;
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(smsUri, null, null, null, null);
if (cursor == null) {
Log.d(TAG, "读取短信失败");
return;
}
while (cursor.moveToNext()) {
// 读取短信内容及发送方号码
String address = cursor.getString(cursor.getColumnIndex(Telephony.Sms.ADDRESS));
String body = cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY));
Log.d(TAG, "address: " + address + ", body: " + body);
}
cursor.close();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_READ_SMS) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
readSms();
} else {
Log.d(TAG, "权限被拒绝");
}
}
}
}
```