欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android利用ContentProvider获取联系人信息

程序员文章站 2022-03-02 21:03:55
本文实例为大家分享了android利用contentprovider获取联系人信息的具体代码,供大家参考,具体内容如下在写代码前我们首先看一下运行的效果运行效果如下:点了获取联系人就展示如下效果读取联...

本文实例为大家分享了android利用contentprovider获取联系人信息的具体代码,供大家参考,具体内容如下

在写代码前我们首先看一下运行的效果

运行效果如下:

Android利用ContentProvider获取联系人信息

点了获取联系人就展示如下效果

Android利用ContentProvider获取联系人信息

读取联系人信息的例子(mainactivity)

package com.example.administrator.myapplication;

import android.content.contentresolver;
import android.database.cursor;
import android.net.uri;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.util.log;
import android.view.view;
import android.widget.listview;
import android.widget.simpleadapter;

import java.util.arraylist;
import java.util.hashmap;
import java.util.list;
import java.util.map;
import java.util.objects;

/**
 * 获取联系人
 */
public class mainactivity extends appcompatactivity {

    private contentresolver cr;
    private list<map<string,object>> data;
    private listview lv_main_list;
    private simpleadapter simpleadapter;

    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        lv_main_list = (listview)findviewbyid(r.id.lv_main_list);

        //获取内容访问者
        cr = getcontentresolver();

        data = new arraylist<map<string,object>>();
        //适配器
        simpleadapter = new simpleadapter(this,data,android.r.layout.simple_list_item_2,new string[]{"names","phones"},new int[]{android.r.id.text1,android.r.id.text2});
        lv_main_list.setadapter(simpleadapter);
    }

    public void getcontacts(view view){
        cursor cursor=cr.query(uri.parse("content://com.android.contacts/raw_contacts"),null,null,null,null);
        while(cursor.movetonext()){
            map<string,object> map=new hashmap<string,object>();
            int id=cursor.getint(cursor.getcolumnindex("_id"));
            string displayname=cursor.getstring(cursor.getcolumnindex("display_name"));
            log.i("test",id+" "+displayname);
            map.put("names",displayname);

            //根据联系人获取联系人数据
            cursor cursor2=cr.query(uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data"),null,null,null,null);
            while(cursor2.movetonext()){
              //  int type=cursor2.getint(cursor2.getcolumnindex("mimetype_id"));
                string type=cursor2.getstring(cursor2.getcolumnindex("mimetype"));
                string data1=null;
                if ("vnd.android.cursor.item/phone_v2".equals(type)){
                    data1 = cursor2.getstring(cursor2.getcolumnindex("data1"));
                    log.i("test","   "+type+" "+data1);
                    map.put("phones",data1);
                }
            }
            data.add(map);
        }
        //通知适配器发生改变
        simpleadapter.notifydatasetchanged();
    }
}

布局文件(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingbottom="@dimen/activity_vertical_margin"
    android:paddingleft="@dimen/activity_horizontal_margin"
    android:paddingright="@dimen/activity_horizontal_margin"
    android:paddingtop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.administrator.myapplication.mainactivity">

    <button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取所有的联系人"
        android:onclick="getcontacts"
        />
    <listview
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lv_main_list"

        ></listview>
</linearlayout>

需要在清单文件上配置联系人的权限(androidmanifest.xml)

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。