`
leiwuluan
  • 浏览: 707079 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

android 获取电话本中的联系人列表

 
阅读更多

首先这里介绍一下 获取思路。

第一种 : 直接查通讯录的数据库  

第二种 :设用通讯录的Activity 并返回所选择的数据。

 

 

先实现第二种吧。、第二种相对简单,易操作、

 

你要操作   手机中的通讯录,就要有权限 的操作。

android 内核linux

 

1、要在工程中 AndroidManifest.xml  文件中添加操作权限

    <!-- 读取联系人权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />

 

 

然后在你的activity 里面编写调用代码:

	Intent intent = new Intent();
        intent.setAction(Intent.ACTION_PICK);
        intent.setData(ContactsContract.Contacts.CONTENT_URI);
        startActivityForResult(intent, REQUEST_CONTACT);

 

重写 Activity 的 onActivityResult 方法:

 

	//重写的结果返回方法
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) {
        case 1:
            if (data == null) {
                return;
            }
            Uri result = data.getData();
            String contactId = result.getLastPathSegment();
            
            String name = "";
            String phone = "";
            
            //得到名称
            String[] projection = new String[] { People._ID, People.NAME ,People.NUMBER};  
            Cursor cursor = getContentResolver().query(People.CONTENT_URI,     
            		projection, // select sentence    
            		People._ID + " = ?", // where sentence    
            		new String[] { contactId }, // where values    
            		People.NAME); // order by  
            
            if (cursor.moveToFirst()) {
                name = cursor.getString(cursor.getColumnIndex(People.NAME));
            }
            
            //得到 电话 
            projection = new String[] { Contacts.Phones.PERSON_ID, Contacts.Phones.NUMBER};  
            cursor = getContentResolver().query(Contacts.Phones.CONTENT_URI,     
            		projection, // select sentence    
            		Contacts.Phones.PERSON_ID + " = ?", // where sentence    
            		new String[] { contactId }, // where values    
            		Contacts.Phones.NAME); // order by  
            
            if (cursor.moveToFirst()) {
                phone = cursor.getString(cursor.getColumnIndex(Contacts.Phones.NUMBER));
            }
            
            //显示
            showPhone.setText(name+":"+phone);
            break;
		}
	}

 就可以得到你选择的 联系的信息了。

 

 

下面来看一下我的例子和载图吧。

 

1、添加操作权限 AndroidManifest.xml

    <!-- 读取联系人权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />

上面有载图自己看。

 

2、创建 layout   文件  get_phone_num.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="clickFun"
        android:text="得到电话号码" />

    <TextView
        android:id="@+id/getPhoneNumTextId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="电话号码" />

</LinearLayout>

 一个button 一个view

 

3、创建Activity 类 GetPhoneNumActivity.java

package com.main;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.main.db.FriendsDao;

public class AddUserActivity extends Activity {
	private EditText name;
	private EditText phoneNum;
	private EditText birthday;
	private String sexText;
	
	private FriendsDao friendsDao;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.add_user);
		
		//得到页面控件
		name=(EditText)findViewById(R.id.addUserTextName);
		phoneNum=(EditText)findViewById(R.id.addUserTextNum);
		birthday=(EditText)findViewById(R.id.addUserTextBirthday);
		RadioGroup sex=(RadioGroup)findViewById(R.id.addUserTextSex);
		sex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				Log.d("test", "select radio " + sexText);
				sexText=((RadioButton)findViewById(checkedId)).getText().toString();
				Log.d("test", "select radio " + sexText);
			}
		});
		friendsDao=new FriendsDao(this,"ll1x.db",null,2);
	}
	
	public void addUserClick(View view){
		int viewId=view.getId();
		switch(viewId){
		case R.id.addUserOkBut://确定
			
			//验证
			String name=this.name.getText().toString();
			String phoneNum=this.phoneNum.getText().toString();
			String birthday=this.birthday.getText().toString();
			
			//提交 保存数据库
			friendsDao.insertData(name, phoneNum,birthday,sexText);
			Log.d("test", "addUserClick " + name+"|"+phoneNum+"|"+birthday+"|"+sexText.toString());
			break;
		case R.id.addUserNoBut://取消
			
			break;
		case R.id.addUserFromTXId:
			Intent intent = new Intent();
	        intent.setAction(Intent.ACTION_PICK);
	        intent.setData(ContactsContract.Contacts.CONTENT_URI);
	        startActivityForResult(intent, 1);
			break;
		}
	}
	
	//重写的结果返回方法
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) {
        case 1:
            if (data == null) {
                return;
            }
            Uri result = data.getData();
            String contactId = result.getLastPathSegment();
            
            String name = "";
            String phone = "";
            
            //得到名称
            String[] projection = new String[] { People._ID, People.NAME ,People.NUMBER};  
            Cursor cursor = getContentResolver().query(People.CONTENT_URI,     
            		projection, // select sentence    
            		People._ID + " = ?", // where sentence    
            		new String[] { contactId }, // where values    
            		People.NAME); // order by  
            
            if (cursor.moveToFirst()) {
                name = cursor.getString(cursor.getColumnIndex(People.NAME));
            }
            
            //得到 电话 
            projection = new String[] { Contacts.Phones.PERSON_ID, Contacts.Phones.NUMBER};  
            cursor = getContentResolver().query(Contacts.Phones.CONTENT_URI,     
            		projection, // select sentence    
            		Contacts.Phones.PERSON_ID + " = ?", // where sentence    
            		new String[] { contactId }, // where values    
            		Contacts.Phones.NAME); // order by  
            
            if (cursor.moveToFirst()) {
                phone = cursor.getString(cursor.getColumnIndex(Contacts.Phones.NUMBER));
            }
            
            //显示
            showPhone.setText(name+":"+phone);
            break;
		}
	}
}
 

 

运行载图:

 

 


 

 


 

 


 

 

 

 

资料:

 

http://hi.baidu.com/%C1%F5%D0%A1%C0%F61984519/blog/item/d58cc37b9aa1daf32e73b3ae.html

 

http://blog.sina.com.cn/s/blog_60a94ae70100vfrm.html

 

 

Android 通讯录学习笔记之——调用系统添加成员功能

 

 

就到这里,不懂Call 我。

 

 

 

ok 就到这里、

 

 

做了一下修改:

Phone 改成了 PhoneLookup

 


 

 

 

 

  • 大小: 44.2 KB
  • 大小: 8.3 KB
  • 大小: 54.1 KB
  • 大小: 9.1 KB
  • 大小: 27.9 KB
1
0
分享到:
评论
1 楼 NN_iaoiao 2015-05-29  
问一下 你的这个People 类 是自定义的还是android.provider.Contacts.People类  如果是自定义的 能发我People类一下吗  邮箱:cshangdic@163.com  谢谢了

相关推荐

    Android获取联系人

    以下是对"Android获取联系人"这一主题的详细讲解。 首先,Android系统中的联系人数据存储在SQLite数据库中,开发者可以通过ContentProvider接口访问这些数据。ContactsContract类是Android提供的一个内容提供者...

    Android 联系人列表

    在Android开发中,构建一个联系人列表是常见的需求,它涉及到UI设计、数据获取和处理等多个方面。本篇文章将深入探讨如何实现一个“Android电话联系人页面布局”以及相关的代码实现。 首先,我们需要理解Android的...

    Android 获取系统联系人并发送短信demo

    在Android中,获取系统联系人的过程涉及读取存储在设备上的联系人数据。这通常通过ContentResolver和ContactsContract类来完成。首先,ContentResolver是Android系统提供的接口,它负责与ContentProvider进行交互,...

    Android 获取通讯录联系人信息源码

    以上就是Android获取通讯录联系人信息的基本流程。通过阅读提供的源码,开发者可以学习到如何实际应用这些步骤,并了解如何在自己的应用中整合这些功能。同时,了解Content Provider机制对于理解Android数据共享至关...

    查看并获取联系人电话

    在Android和iOS等移动操作系统中,查看和获取联系人电话是一项常见的功能,广泛应用于社交应用、通讯工具和其他需要用户授权访问联系人信息的软件中。本文将深入探讨如何在这些平台上实现这一功能。 首先,我们从...

    Android Studio 获取手机联系人项目main文件

    在这个项目中,我们将深入探讨如何在Android Studio中获取手机联系人,并执行发送短信、拨打电话以及对联系人进行增删改的操作。 首先,我们需要在AndroidManifest.xml文件中添加必要的权限声明,这是进行任何涉及...

    基于Android实现电话本管理系统

    在Android中,我们可以使用XML布局文件来定义UI元素,如ListView用于显示联系人列表,Checkbox用于选择要操作的联系人,以及Button来执行添加、删除、编辑等操作。在`res/layout`目录下,我们可以创建对应的XML布局...

    Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    总结来说,Android开发中获取手机通讯录和SIM卡联系人信息,以及调用拨号界面,主要是通过Content Resolver查询系统提供的Content Provider,同时需要正确配置权限。理解并熟练运用这些方法,可以帮助开发者构建更...

    android 获取手机通讯录联系人信息 点击直接拨打电话

    在Android开发中,获取手机通讯录联系人信息并实现点击直接拨打电话的功能是常见的需求,这对于构建各种社交、工具类应用至关重要。以下将详细介绍如何实现这个功能。 首先,要访问手机通讯录,我们需要请求读取...

    Android通讯录管理(获取联系人、通话记录、短信消息)

    - 查询联系人:使用`ContentResolver.query()`方法,指定`ContactsContract.CommonDataKinds.Phone.CONTENT_URI`作为查询的URI,可以获取电话号码、名字等信息。 - 处理查询结果:通过Cursor遍历查询结果,解析每...

    android2.2获取本机号码,获取本机联系人信息并拨打电话

    在Android系统中,获取本机号码、联系人信息以及拨打电话是常见的功能需求,尤其是在开发与通讯相关的应用程序时。在Android 2.2(API级别8)版本中,这些功能的实现有一些特定的注意事项和权限要求。下面我们将详细...

    基于android studio的读取联系人并可点击拨打电话

    这个项目,"基于android studio的读取联系人并可点击拨打电话",显然是一个教学或示例项目,它借鉴了郭霖的畅销书《第一行代码》中的方法。下面将详细讲解如何实现这一功能。 首先,我们需要了解Android的权限管理...

    Android 获取联系人 仿QQ通讯录

    在Android平台上,获取联系人数据是一项常见的功能,尤其在开发类似QQ通讯录的应用时,我们需要高效、安全地访问用户手机中的联系人信息。本篇将详细介绍如何在Android中实现这一功能,以及如何创建一个仿QQ通讯录的...

    Android-SortListView一个电话本列表的实现

    在Android开发中,创建一个类似电话本的列表是常见的需求,这通常涉及到数据排序和自定义列表视图。本文将详细解析如何通过SortListView来实现这样一个功能,它是一个专为实现电话本效果而设计的控件。我们将深入...

    Android 简单的获取联系人的信息

    在这个场景中,用户进入通讯录并选择一个联系人后立即返回,我们的应用需要能够捕获这一操作并获取选定联系人的姓名和电话号码。 在用户点击联系人后返回,我们可以重写onActivityResult()方法来处理返回的数据。这...

    Android 获取手机联系人并按字母排序,且可根据字母右侧A~Z检索-IT计算机-毕业设计.zip

    这个"Android 获取手机联系人并按字母排序,且可根据字母右侧A~Z检索"的项目,是一个适用于毕业设计学习的源码示例,它覆盖了Android开发中的多个关键知识点。以下将详细介绍这些技术要点: 1. **Android权限管理**...

    获取手机联系人列表点击打电话

    在Android开发中,获取手机联系人列表并实现点击拨打电话的功能是一项常见的需求。这个功能可以应用于许多场景,比如社交应用、企业管理工具等。下面将详细解释如何实现这一功能。 首先,我们需要获取用户的权限。...

    Android获取手机联系人及归属地

    总的来说,实现“Android获取手机联系人及归属地”这一功能,需要理解Android的ContentProvider机制,掌握Volley网络请求库的使用,并且要注意权限管理和数据安全。这是一个典型的Android应用功能,常见于各种社交、...

    android合并重复联系人功能

    在Android操作系统中,管理联系人是一项重要的任务,尤其是在用户导入大量数据或同步不同来源的联系人时,可能会出现重复的联系人条目。为了解决这个问题,我们可以开发一个"android合并重复联系人功能",这将极大地...

    Android带索引联系人列表

    本示例项目“Android带索引联系人列表”旨在教你如何实现这样一个功能丰富的用户界面。下面我们将深入探讨实现这一功能的关键技术和步骤。 首先,我们从“索引”这个概念开始。在联系人列表中,索引通常表现为侧滑...

Global site tag (gtag.js) - Google Analytics