安卓读取,添加,更新,删除联系人,读取短信

这篇具有很好参考价值的文章主要介绍了安卓读取,添加,更新,删除联系人,读取短信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

读取联系人

添加联系人

更新联系人

删除联系人

读取短信


读取联系人

安卓可以通过contentResolver来读取联系人表,联系人表的Uri信息是:content://com.android.contacts/data/phones 从而输出联系人信息,

需要相关权限:

    <uses-permission android:name="android.permission.READ_CONTACTS">
    </uses-permission>

具体代码如下:

    //需要读联系人权限READ_CONTACTS
    @SuppressLint("Range")
    private fun getContact() {
        //查询raw_contacts表获得联系人
        val resolver = contentResolver
        val uri = Uri.parse("content://com.android.contacts/data/phones")
        //查询联系人
        val cursor = resolver.query(uri, null, null, null, null)
        while (cursor!!.moveToNext()) {
            val name =
                cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))
            val number =
                cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
            Log.d(TAG, "联系人:${name}")
            Log.d(TAG, "电话:${number}")
        }
        cursor.close()
    }

输出结构如下:

//2023-08-06 17:29:50.535 31719-31719 MainActivity2           com.example.myapplication            D  联系人:张三
//2023-08-06 17:29:50.535 31719-31719 MainActivity2           com.example.myapplication            D  电话:1 (883) 22
//2023-08-06 17:29:50.535 31719-31719 MainActivity2           com.example.myapplication            D  联系人:si li
//2023-08-06 17:29:50.535 31719-31719 MainActivity2           com.example.myapplication            D  电话:10020
//2023-08-06 17:29:50.535 31719-31719 MainActivity2           com.example.myapplication            D  联系人:bo xiao
//2023-08-06 17:29:50.535 31719-31719 MainActivity2           com.example.myapplication            D  电话:10086

添加联系人

同理,使用contentResolver。需要写联系人权限

 <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

具体代码如下:

    private fun insertContact() {
        val resolver = contentResolver
        val values = ContentValues()
        //向raw_contacts表插入空数据,拿到uri
        val uri = resolver.insert(ContactsContract.RawContacts.CONTENT_URI,values)
        //拿到表id
        val id = uri?.let { ContentUris.parseId(it) }
        //插入姓名
        values.clear()
        //put id
        values.put(ContactsContract.Data.RAW_CONTACT_ID,id)
        //put type
        values.put(ContactsContract.Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE)
        //put 值
        values.put(StructuredName.GIVEN_NAME,"xiaohong")
        resolver.insert(ContactsContract.Data.CONTENT_URI,values)

        //插入手机号
        values.clear()
        //put id
        values.put(ContactsContract.Data.RAW_CONTACT_ID,id)
        //put type
        values.put(ContactsContract.Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE)
        //put 值
        values.put(Phone.NUMBER,"15541383234")
        values.put(Phone.TYPE,Phone.TYPE_MOBILE)
        resolver.insert(ContactsContract.Data.CONTENT_URI,values)

        //插入邮箱
        values.clear()
        //put id
        values.put(ContactsContract.Data.RAW_CONTACT_ID,id)
        //put type
        values.put(ContactsContract.Data.MIMETYPE,Email.CONTENT_ITEM_TYPE)
        //put 值
        values.put(Email.DATA,"163@qq.com")
        values.put(Email.TYPE,Email.TYPE_WORK)
        resolver.insert(ContactsContract.Data.CONTENT_URI,values)
    }

运行结果如下:

安卓读取,添加,更新,删除联系人,读取短信,Android工具类,android

更新联系人

这里我们是根据手机号码先获取联系人表id,也仅有这种方式,获取id

    @SuppressLint("Range")
    private fun getContactByPhone(phone: Long): String? {
        val resolver = contentResolver
        val uri = Uri.parse("content://com.android.contacts/data/phones/filter/$phone")
        val cursor= resolver.query(uri, arrayOf(ContactsContract.Data.CONTACT_ID),null,null,null)
        return if (cursor!!.moveToNext()){
            val id = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID))
            cursor.close()
            id
        }else{
            null
        }
    }

拿到ContactId后,去更新数据

    //根据手机号更新
    @SuppressLint("SuspiciousIndentation")
    private fun updateContact() {
    val id  = getContactByPhone(15541383234)
        if(id!=null){
            val values = ContentValues()
            val resolver = contentResolver
            values.put(ContactsContract.Data.MIMETYPE,CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
            values.put(CommonDataKinds.StructuredName.GIVEN_NAME,"xiaohong_update")
            resolver.update(ContactsContract.Data.CONTENT_URI, values,"${ContactsContract.Data.CONTACT_ID}=?",
                arrayOf(id)
            )
        }
    }

删除联系人

删除联系人,比较简单,我们可以通过联系人名字,删除

    private fun deteleContact() {
        val resolver = contentResolver
        //根据联系人删除
        val ret = resolver.delete(RawContacts.CONTENT_URI, CommonDataKinds.Phone.DISPLAY_NAME+"=?",
            arrayOf("si li")
        )
        if(ret > 0){
            Toast.makeText(this, "删除成功", Toast.LENGTH_LONG).show()
        }
    }

也可以根据联系人手机号删除,具体代码如下:

    private fun deteleContact() {
        val resolver = contentResolver
        //根据手机号删除
         val id = getContactByPhone(10020)
         val ret = resolver.delete(RawContacts.CONTENT_URI, CommonDataKinds.Phone.CONTACT_ID+"=?",
            arrayOf(id)
         )
        if(ret > 0){
            Toast.makeText(this, "删除成功", Toast.LENGTH_LONG).show()
        }
    }

读取短信

除此,我们还可以通过contentResolver读取短信信息,短信表的uri信息content://sms/

用途比如验证码快捷输入,像ios短信验证码快速copy到输入框。

下面看看任何实现

第一,读取短信信息,需要权限:

    <uses-permission android:name="android.permission.READ_SMS">
    </uses-permission>

具体代码如下;

    private fun getMsgs() {
        val uri = Uri.parse("content://sms/")
        val resolver = contentResolver
        val  cursor =resolver.query(uri, arrayOf("address","date","type","body"),null,
        null,null)
        while (cursor!!.moveToNext()){
            val  address = cursor.getString(0)
            val  date = cursor.getString(1)
            val  type = cursor.getString(2)
            val  body = cursor.getString(3)
            Log.d(TAG,"address:${address},date:${date},type:${type},body:${body}")
        }
        cursor.close()
    }

下面是一些表的uri信息:

安卓读取,添加,更新,删除联系人,读取短信,Android工具类,android

 文章来源地址https://www.toymoban.com/news/detail-631277.html

到了这里,关于安卓读取,添加,更新,删除联系人,读取短信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信ipad实现批量添加联系人及批量分组

    小提示: 添加联系人必要接口 搜索返回的V3 V4用于添加联系人 请求URL: http://域名地址/api/contacts/search 请求方式: POST 请求头: Content-Type:application/json X-GEWE-TOKEN: 后台获取 参数: 参数名 必填 数据类型 说明 appid 是 string 设备id user_name 是 string 搜索的手机号/微信号 返回数据

    2024年02月13日
    浏览(53)
  • 如何在 Android 手机上轻松恢复已删除的联系人?

    你有没有错误地删除了你的 Android 联系人?如果您遇到此问题,您知道如何恢复已删除的 Android 联系人吗?现在,您可以使用U1tData安卓数据恢复(奇客软件)来找回这些 Android 联系人。 有时,您可能会看到您的朋友在他/她的个人社交网站上留言:我丢失了所有联系人,请给

    2024年01月16日
    浏览(52)
  • 简单步骤:Android studio 内容提供者 - 实现建立手机通讯录界面,读取系统联系人

    提示:本篇文章将会尽量保持精简,同时请诸位敲写代码时保持耐心,三连是最大的支持! 文章目录 前言 一、项目介绍 二、使用步骤 1.创建程序 2.添加 recyclerview-v7 库 3.放置界面控件 4.搭建界面布局 5.封装实体类 6.编写数据适配器 7.实现显示界面数据功能 8.去掉默认标题栏

    2024年02月08日
    浏览(57)
  • Android中两种选择联系人方式

    1.在选择联系人方式网上也有很多案例 有的说是使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI也有的说是使用ContactsContract.Contacts.CONTENT_URI其实这两种方式都可以使用 只不过ContactsContract.Contacts.CONTENT_URI这种方式需要多查询一遍 一、使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI跳转

    2024年01月17日
    浏览(33)
  • 苹果手机怎么恢复通讯录联系人

    随着社交媒体和移动互联网的快速发展,手机已经成为我们日常生活不可或缺的一部分。在手机中,通讯录联系人是我们很重要的一部分数据,这些联系人包括亲友、同事、客户等等。但有时候,由于各种原因,我们可能会不小心删除或者丢失这些重要的联系人信息。这时候

    2024年02月12日
    浏览(52)
  • Android 获取手机通讯录联系人信息

    近日在项目开发过程中发现,华为手机HarmonyOS 3.0系统,设置隐私 里面可以查看各个应用访问隐私权限的次数,发现应用程序访问手机通讯录的次数异常的高,针对访问通讯录频次高的问题做了研究和优化 问题分析: 分析代码发现只要通过ContentProvider 访问通讯录一次,统计

    2024年02月12日
    浏览(47)
  • Android 获取手机应用数据 联系人,图片,拍照等

    1、获取手机联系人 获取手机信息前得获取权限 在得到权限后就能获取到手机联系人的信息 在manifest里面注册权限 判断是否有权限 获取联系人数据 附加一个请求权限的返回处理 2、获得手机相册的里的图片 处理返回的图片方式,根据业务需求可以进行自己设置,在此只是显

    2024年02月12日
    浏览(53)
  • API接口:查询企业联系人邮箱及相关信息

    查询企业联系人邮箱API接口是一种非常实用的API接口,它可以帮助我们快速获取企业联系人的邮箱地址。这个接口可以在各种需要进行营销活动或者联系客户的场合中使用,例如邮件广告、市场调研等。 这篇博文将详细介绍这个API接口的原理和功能,并提供示例代码来演示如

    2024年02月08日
    浏览(53)
  • 手机联系人批量导入(字符编码、xlsx与vcf互转)

    单位同事每人都办理了一个192新手机号,一打过来不知道是谁,又懒的一个个保存姓名。一想是不是可以批量导入呢?电子表格号码名单我有啊,试试吧。 1.先下载手机联系人文件看看吧。在手机联系人设置中有个导出选项(华为手机为例):  导出文件为00001.vcf,用文本编辑

    2024年02月09日
    浏览(44)
  • 企业微信工具栏获取外部联系人unionid

    企业微信H5获取外部联系人unionid 使用企业微信获取外部联系人unionid关联小程序,优先需要知道的是,企业微信可以通过用户userid获取到unionid,小程序可以通过openid,获取unionid,但是无法获取userid或者openid,两者只能通过统一unionid来关联。 特别需要注意的是,如果开发者拥

    2024年02月08日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包