AndroidManifest.xml
加入以下配置,获得权限:
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
监听授权事件
在MainActivity里加入监听方法:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==1){
Toast.makeText(this, new Integer(grantResults[0]).toString(), Toast.LENGTH_SHORT).show();
}
}
获取短信
private List<Map<String, String>> obtainPhoneMessage() {
if (ContextCompat.checkSelfPermission(this, "android.permission.READ_SMS")
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{"android.permission.READ_SMS"}, 1);
}
Uri SMS_INBOX = Uri.parse("content://sms/");
List<Map<String, String>> list = new ArrayList<>();
String[] projection = new String[]{"_id", "address", "person", "body", "date", "type"};
// Cursor cur = cr.query(SMS_INBOX, projection, null, null, "date desc");
Cursor cur = getContentResolver().query(SMS_INBOX, projection, null, null, null);
if (null == cur) {
return null;
}
while (cur.moveToNext()) {
@SuppressLint("Range") String number = cur.getString(cur.getColumnIndex("address"));//手机号
@SuppressLint("Range") String name = cur.getString(cur.getColumnIndex("person"));//联系人姓名列表
@SuppressLint("Range") String body = cur.getString(cur.getColumnIndex("body"));//短信内容
@SuppressLint("Range") String type = cur.getString(cur.getColumnIndex("type"));//短信type,1,接受,2,发送
Map<String, String> map = new HashMap<String, String>();
map.put("num", number);
map.put("name", name);
map.put("mess", body);
map.put("type", type);
list.add(map);
}
return list;
}