当前位置: 移动技术网 > 移动技术>移动开发>Android > Android ContentProvider查看/读取手机联系人实例

Android ContentProvider查看/读取手机联系人实例

2019年07月24日  | 移动技术网移动技术  | 我要评论
看到某些app里面有读取联系人的功能,然后自己尝试了一下。发现这个挺简单的。然后自己就做了一个demo给大家,希望借这个demo可以让大家学习一下怎么实现读取手机联系人。

看到某些app里面有读取联系人的功能,然后自己尝试了一下。发现这个挺简单的。然后自己就做了一个demo给大家,希望借这个demo可以让大家学习一下怎么实现读取手机联系人。

这里我用了两种方法去读取:第一张图片是跳转到系统自带的联系人界面,第二种就是直接去读取让后绑上来显示在主页面。话不多说直接上代码。

记得在androidmanifest.xml 记得加入这两句,不然就读取不到联系人。

<uses-permission android:name="android.permission.read_contacts" />
<uses-permission android:name="android.permission.write_contacts" />
package com.example.android_contentersolver;

import android.app.activity;
import android.app.alertdialog;
import android.content.dialoginterface;
import android.content.intent;
import android.database.cursor;
import android.net.uri;
import android.os.bundle;
import android.provider.contacts;
import android.provider.contactscontract;
import android.telephony.phonestatelistener;
import android.telephony.telephonymanager;
import android.view.view;
import android.view.view.onclicklistener;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.checkbox;
import android.widget.listview;
import android.widget.textview;

public class mainactivity extends activity {
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);

    findviewbyid(r.id.main_btn).setonclicklistener(new onclicklistener() { 
      @override
      public void onclick(view v) {
        // todo auto-generated method stub
        //查询联系人号码
        final cursor cursor = getcontentresolver()
            .query(contactscontract.commondatakinds
            .phone.content_uri, null, null, null, null);

         baseadapter adapter = new baseadapter()
         {
           @override
           public int getcount()
           {
             return cursor.getcount();
           }

           @override
           public object getitem(int position)
           {
             return position;
           }

           @override
           public long getitemid(int position)
           {
             return position;
           }

           @override
           public view getview(int position,
               view convertview, viewgroup parent)
             {
               cursor.movetoposition(position);
//               checkbox rb = new checkbox(mainactivity.this);
               textview text=new textview(mainactivity.this);
               // 获取联系人的电话号码,并去掉中间的中划线、空格
               string number = cursor
                 .getstring(cursor.getcolumnindex(
                 contactscontract.commondatakinds
                 .phone.number))
                 .replace("-", "")
                 .replace(" ", "");
//               rb.settext(number);
               string name = cursor
                   .getstring(cursor.getcolumnindex(
                   contactscontract.commondatakinds
                   .phone.display_name));
                text.settext("名字:"+name+"  电话号码:"+number);


               return text;
             }
         };

       //加载listview
       listview listview=(listview) findviewbyid(r.id.mian_list);
       listview.setadapter(adapter);
      }
    });


    //跳转系统的联系人界面
    findviewbyid(r.id.main_btn_sys).setonclicklistener(new onclicklistener() {

      @override
      public void onclick(view v) {
        // todo auto-generated method stub
        intent intent=new intent();
        intent.setaction(intent.action_pick);
        intent.settype("vnd.android.cursor.dir/phone");
        startactivityforresult(intent, 0x100);
      }
    });
  }

  @override
  protected void onactivityresult(int requestcode, int resultcode, intent data) {
  // todo auto-generated method stub
  super.onactivityresult(requestcode, resultcode, data);
    uri uri=data.getdata();
    cursor cursor = getcontentresolver()
        .query(uri, null, null, null, null);
    while(cursor.movetonext()){
      string name=cursor.getstring(cursor.getcolumnindexorthrow(contacts.phones.name));
      string number=cursor.getstring(cursor.getcolumnindexorthrow(contacts.phones.number));
      textview textview=(textview) findviewbyid(r.id.mian_lists);
      textview.settext("名字:"+name+"  电话号码:"+number);
    }
  }



}

这是主界面

这里写图片描述

这里写图片描述

这里写图片描述

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网