獲取用戶短信列表
權限
<uses-permission android:name="android.permission.READ_SMS" />
// 如果不需要用戶姓名,可不需要該權限
<uses-permission android:name="android.permission.READ_CONTACTS" />
獲取用戶短信列表
private static String getDisplayName(Activity activity, String strAddress) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (activity.checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
return strAddress;
}
}
String contactName = strAddress;
String CONTACTS_LOOKUP = "content://com.android.contacts/phone_lookup/";
Uri userUri = Uri.parse(CONTACTS_LOOKUP + strAddress);
Cursor cursor = activity.getContentResolver().query(userUri, null, null, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
contactName = cursor.getString(cursor.getColumnIndex("display_name"));
}
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
cursor = null;
}
return contactName;
}
public static List<SmsInfo> getSmsBeanReq(Activity activity, int limit) {
if (activity == null) return null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (activity.checkSelfPermission(Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
return null;
}
}
List<SmsInfo> smsInfos = new ArrayList<>();
smsBeanReq.setSms_info(smsInfos);
try {
String SMS = "content://sms/";
Uri uri = Uri.parse(SMS);
String[] projection = new String[]{"address", "person", "body", "date", "type"};
Cursor cur = activity.getContentResolver().query(uri, projection, null, null, "date desc limit " + limit);
if (cur == null) return null;
if (cur.moveToFirst()) {
int index_Address = cur.getColumnIndex("address");
int index_Body = cur.getColumnIndex("body");
int index_Date = cur.getColumnIndex("date");
int index_Type = cur.getColumnIndex("type");
do {
String strAddress = cur.getString(index_Address);
String strBody = cur.getString(index_Body);
long longDate = cur.getLong(index_Date);
int intType = cur.getInt(index_Type);
String contactName = getDisplayName(activity, strAddress);
SmsBeanReq.SmsInfo smsInfo = new SmsBeanReq.SmsInfo();
smsInfo.setSms_name(contactName);
smsInfo.setSms_number(strAddress);
smsInfo.setSms_content(strBody);
smsInfo.setSms_date(longDate);
smsInfo.setSms_type(intType);
smsInfos.add(smsInfo);
} while (cur.moveToNext());
if (!cur.isClosed()) {
cur.close();
cur = null;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return smsInfos;
}