安卓基础之读取联系人的姓名和电话

一.摘要:利用内容解释器调用联系人应用的内容提供者暴露的方法,读取联系人信息.(本节只总结实现步骤,解释请看http://www.xuanyusong.com/archives/169)

二.主要逻辑:

1.获取内容解释者mResolver

ContentResolver mResolver=getApplicationContext().getContentResolver();

2.调用解释者的query方法获取cursor

Cursor cursor=mResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,null,null,null);

3.遍历cursor获得联系人信息

if(cursor!=null){
            while(cursor.moveToNext()){
          ......
            }
        }

三.具体实现:

AndroidManifest需要加入权限:

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

MainActivity.java

public class MainActivity extends AppCompatActivity {

    String[] projection=new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
                                        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                                        ContactsContract.CommonDataKinds.Phone.NUMBER};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        List<Contract> mContracts=new ArrayList<Contract>();
        mContracts=getcontract();
        if(mContracts!=null){
            for (Contract contract:mContracts) {
                int id=contract.getId();
                String name=contract.getName();
                String phone=contract.getPhone();
                System.out.println(id+name+phone);
            }}
    }
    private List<Contract> getcontract(){

        List<Contract> contracts=new ArrayList<Contract>();

        ContentResolver mResolver=getApplicationContext().getContentResolver();
        Cursor cursor=mResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,null,null,null);
        if(cursor!=null){
            while(cursor.moveToNext()){
                String phone =cursor.getString(2);
                int id=cursor.getInt(0);
                String name=cursor.getString(1);
                Contract contract=new Contract();
                contract.setId(id);
                contract.setName(name);
                contract.setPhone(phone);
                contracts.add(contract);
            }
        }
        return contracts;
    }
}

Contract.java

public class Contract {
    int id=0;
    String name=null;
    String phone=null;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

}

原文地址:https://www.cnblogs.com/adressian/p/10198109.html

时间: 2024-08-03 09:56:33

安卓基础之读取联系人的姓名和电话的相关文章

Android获取手机联系人的姓名和电话

Android获取手机联系人的姓名和电话 主要是用到了跳入手机联系人的intent和获取手机联系人信息的内容提供者,直接上代码 注:此贴是借鉴别人的帖子加了一些自己的东西写出的,原帖地址明日附上: / 首先 我们需要跳入手机通讯录 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0); // 之后,我们需要重写

android 获取联系人的姓名和电话,无法获取电话

============问题描述============ 代码如下 package com.example.sysaction; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.ContactsContract; import android.annotation.SuppressLint; import android.annotation.Ta

【Android】利用AutoCompleteTextView控件联系人自动补全与根据联系人姓名查询电话

自动补全功能是app比较友好的功能之一,但利用AutoCompleteTextView自动补全文本框控件完成起来并不简单,因为其中涉及到AutoCompleteTextView填充数据的适配器,与AutoCompleteTextView的监听器.同时还需要利用ContentResolver去查找设备的通讯录,当然,这与<[Android]利用安卓的数据接口.多媒体处理编写内存卡Mp3播放器app>(点击打开链接)中遍历MP3与<[Android]Sqlite数据库增删改查>(点击打

【android基础】读取系统联系人信息和添加一条联系人信息到通讯录

一,读取系统联系人信息 I,准备工作 同样,要读取系统联系人的数据库文件,首先要确定主机名和匹配规则. 我们将联系人的数据库文件导出来查看时,有下面几点需要知道: 1)联系人的数据,比如name,number,email都存储在data表的data1列. 2)区分不同联系人的列为raw_contact_id,它对应于raw_contacts表中的contact_id列 3)区分联系人数据类型的列位于mimetype列,其中1表示emial,5表示电话,7表示姓名. II,思路 读取联系人的信息,

Android基础笔记(十四)- 内容提供者读取联系人

利用内容提供者读取联系人 利用内容提供者插入联系人 内容观察者的原理 利用内容观察者监听系统应用数据库或者自己应用数据库的变化 利用内容提供者读取联系人 读取联系人相对于读取短信来说就复杂很多了,我们一步一步来吧. 先看看一下联系人的数据库,是位于什么地方! 既然很复杂,我们就一步步分析吧,我们把contacts2.db导出到电脑中,并使用SQLite数据库软件打开.你可以看到一大堆的表和视图,当然我们使用到的也只有三张.分别是raw_contacts.data.mimetypes分别存储着联系

安卓实训第十天:利用SharedPreferences来实现数据的保存和读取,以及实现手机电话备份,XMLserializer

一.利用SharedPreferences来实现数据的保存和读取: 1.Mainactivity: package com.example.sharedpreferencesdemo; import com.example.sharedpreferencesdemo.util.SharedPreferencesUtil; import android.app.Activity; import android.app.AlertDialog; import android.content.Cont

安卓基础01

安卓基础01 SDK System images 这是在创建模拟器时需要的system image,也就是在创建模拟器时CPU/ABI项需要选择的,下载并解压后,将解压出的整个文件夹复制或者移动到 your sdk 路径/system-images文件夹下即可, 如果没有 system-images目录就先 创建此文件夹,然后打开SDK Manager,打开Tools(工 具)菜单选择Options(选项)菜单项打开Android SDK Manager Setting对话框,点击Clear C

读取联系人

首先编辑一下布局文件. 联系人信息肯定是一条一条的,所以在布局中使用ListView即可 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layou

22读取联系人

在模拟器中添加几个联系人,在data/data/下导出数据库,如下: 打开. 关心的表有:raw_contact,data,mimetypes,计三张表. 首先得到内容解析器,得到内容解析器之后,既可以使用查询的方法了,查询需要传入URI,查看源代码看下raw_contacts的路径. resolver.query(uri, new String[]{"contact_id"}, selection, selectionArgs, sortOrder); query的第二个参数对应于r