1、权限:
private void initSmsPermissions() {
RxPermissions permissions = new RxPermissions(this);
permissions.request(
Manifest.permission.READ_SMS
).subscribe(new BaseObserver<Boolean>(context, false) {
@Override
public void receiveResult(Boolean result) {
if (result) {
} else {
ToastUtil.showShortToast("请授予相应的权限,否则无法使用");
}
}
});
}
2、获取系统短信工具类
public class ReadSmSHelper {
static final String SMS_URI_ALL = "content://sms/";
static final String SMS_URI_INBOX = "content://sms/inbox";
static final String SMS_URI_SEND = "content://sms/sent";
static final String SMS_URI_DRAFT = "content://sms/draft";
public static List<ReadSmsBean> getReceiveSms(Context context) {
List<ReadSmsBean> SmsLists = new ArrayList<>();
ContentResolver cr = context.getContentResolver();
String[] projection = new String[]{"_id", "address", "person", "body", "date", "type"};
Uri uri = Uri.parse(SMS_URI_ALL);
Cursor cur = cr.query(uri, projection, null, null, "date desc");
try {
if (cur.moveToFirst()) {
String name;
String phoneNumber;
String smsbody;
String date;
String type;
int nameColumn = cur.getColumnIndex("person");
int phoneNumberColumn = cur.getColumnIndex("address");
int smsbodyColumn = cur.getColumnIndex("body");
int dateColumn = cur.getColumnIndex("date");
int typeColumn = cur.getColumnIndex("type");
do {
name = cur.getString(nameColumn);
phoneNumber = cur.getString(phoneNumberColumn);
smsbody = cur.getString(smsbodyColumn);
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss");
Date d = new Date(Long.parseLong(cur.getString(dateColumn)));
date = dateFormat.format(d);
int typeId = cur.getInt(typeColumn);
// if(typeId == 1){
// type = "接收";
// } else if(typeId == 2){
// type = "发送";
// } else {
// type = "";
// }
if (smsbody == null) smsbody = "";
ReadSmsBean bean = new ReadSmsBean();
bean.setName(name);
bean.setPhoneNumber(phoneNumber);
bean.setSmsbody(smsbody);
bean.setDate(date);
bean.setType(String.valueOf(typeId));
SmsLists.add(bean);
} while (cur.moveToNext());
}
} catch (Exception ex) {
}
return SmsLists;
}
}
3、ReadSmsBean 实体类
public class ReadSmsBean implements Serializable {
private String name;
private String phoneNumber;
private String smsbody;
private String date;
private String type;
private boolean isChecked;
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean checked) {
isChecked = checked;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getSmsbody() {
return smsbody;
}
public void setSmsbody(String smsbody) {
this.smsbody = smsbody;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
4、获取数据:
List<ReadSmsBean> readSmsLists = ReadSmSHelper.getReceiveSms(context);
LogUtil.d("readSmsLists:" + JSON.toJSONString(readSmsLists));