獲取用戶短信列表

獲取用戶短信列表

權限

<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); // long 
                // 短信類型 1接收 2發送
                smsInfo.setSms_type(intType);
                smsInfos.add(smsInfo);
            } while (cur.moveToNext());
            if (!cur.isClosed()) {
                cur.close();
                cur = null;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
	return smsInfos;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章