获取用户短信列表

获取用户短信列表

权限

<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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值