android 读取手机通讯录,Android ContentProvider查看/读取手机联系人实例

本文详细介绍了如何在Android应用中实现读取手机联系人的功能。通过两种方法展示了如何从联系人数据库中获取数据并显示在ListView上,包括直接查询和使用系统联系人界面。同时,提到了在AndroidManifest.xml中添加权限的重要性。
摘要由CSDN通过智能技术生成

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

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

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

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);

}

}

}

e493798ead4c8b75773ca2b2d958325d.png

6629a74f54c0da69eb1204e462b72bc2.png

afccaee74327221a10595eb6a5f6c1ac.png

a94670ff9429330ae59e46c4bed2b4cb.png

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值