Android通讯录、通话记录、短信、应用等模糊查询方法

本文介绍了如何在Android系统中进行通讯录、通话记录、短信和应用的模糊查询操作,包括根据号码、名字或内容进行匹配的方法,并提及了资源管理器的文件查询功能。
摘要由CSDN通过智能技术生成

最近要开发一个功能,能够查询手机内部的通讯录、通话记录、短信、应用、资源管理等内容,所以将一下方法作下记录。其中通讯录、通话记录和短信都是支持输入号码或者名字或者内容就能模糊匹配的。

1、通讯录模糊查询

public List<Map<String, String>> searchContacts(Activity context, String keyword) {
        ContentResolver cr = context.getContentResolver();
        List<Map<String, String>> contactList = new ArrayList<>();

        if (isPhoneNum(keyword)) {
            Cursor cursorP = cr.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.NUMBER + " like " + "'%" + keyword + "%'",
                    null,
                    null);
            while (cursorP.moveToNext()) {
                Map<String, String> map = new HashMap<>();

                String phoneNumber = cursorP.getString(cursorP.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                String photo = cursorP.getString(cursorP.getColumnIndex(ContactsContract.CommonDataKinds.Photo.PHOTO_URI));

                String contactId = cursorP.getString(cursorP.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
                Cursor nameC = cr.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID + "=" + contactId, null, null);
                while (nameC.moveToNext()) {

                    String name = nameC.getString(nameC.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                    Log.i(TAG, "name=" + name + "phoneNumber=" + phoneNumber + ",photo=" + photo);

                    map.put("name", name);
                    map.put("phoneNum", phoneNumber);
                    map.put("photo", photo);
                    contactList.add(map);
                }

            }
            cursorP.close();
        } else {
            Cursor cursorName = cr.query(
                    ContactsContract.Contacts.CONTENT_URI,
                    null,
                    ContactsContract.PhoneLookup.DISPLAY_NAME + " like " + "'%" + keyword + "%'",
                    null,
                    null);
            while (cursorName.moveToNext()) {

                String name = cursorName.getString(
                        cursorName.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                String contactId = cursorName
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值