• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > android:获取手机号码和姓名实现通讯录

android:获取手机号码和姓名实现通讯录

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android手机号码验证,android 获取本机号码,android 电话号码,android 手机号码,android 获取来电号码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

android:获取手机号码和姓名实现通讯录


首先是运行结果

\

由于通讯录在手机里是以数据库贮存的 所以我们可以通过一个方法

 context.getContentResolver().query(Phone.CONTENT_URI,
				null, null, null, null);

来获得通讯录 ,这个方法返回一个游标的数据类型,通过moveToNext()方法来获取所有的手机号码信息

当然读取手机通讯录需要权限 在adnroidManifest文件中声明即可

由于我也实现了打电话的功能 所以也要声明权限

	<uses-permission android:name="android.permission.READ_CONTACTS">
	<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission></uses-permission>
布局文件

activity_main.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent">

    <listview android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content">
    </listview>

</relativelayout>
listview的布局文件:item.xml,在这里我设置的头像为默认的 当然也可以在手机数据库中读取联系人的icon
<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E-->
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">

    <imageview android:id="@+id/image" android:layout_width="60dp" android:layout_height="60dp" android:padding="10dp" android:src="@drawable/ic_launcher">

    <textview android:id="@+id/name" android:paddingtop="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_torightof="@id/image" android:text="name">

    <textview android:id="@+id/number" android:paddingtop="5dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_torightof="@id/image" android:text="number">

</textview></textview></imageview></relativelayout>

自己封装一个联系人信息的类 有两个变量

package com.example.getphonenumber;

public class PhoneInfo {
	private String name;
	private String number;
	public PhoneInfo(String name, String number) {
		this.name = name;
		this.number = number;
	}
	public String getName() {
		return name;
	}
	public String getNumber() {
		return number;
	}
}

读取手机数据库中的通讯录

GetPhoneNumberFromMobile.class

package com.example.getphonenumber;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract.CommonDataKinds.Phone;

public class GetPhoneNumberFromMobile {
	private List list;

	public List getPhoneNumberFromMobile(Context context) {
		// TODO Auto-generated constructor stub
		list = new ArrayList();
		Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI,
				null, null, null, null);
		//moveToNext方法返回的是一个boolean类型的数据 
		while (cursor.moveToNext()) {
			//读取通讯录的姓名
			String name = cursor.getString(cursor
					.getColumnIndex(Phone.DISPLAY_NAME));
			//读取通讯录的号码
			String number = cursor.getString(cursor
					.getColumnIndex(Phone.NUMBER));
			PhoneInfo phoneInfo = new PhoneInfo(name, number);
			list.add(phoneInfo);
		}
		return list;
	}
}
自定义adapter
package com.example.getphonenumber;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter{
	private List list;
	private Context context;
	
	public MyAdapter(List list, Context context) {
		this.list = list;
		this.context = context;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return list.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		if(convertView==null){
			ViewHolder viewHolder=new ViewHolder();
			LayoutInflater inflater=LayoutInflater.from(context);
			convertView=inflater.inflate(R.layout.item, null);
			viewHolder.name=(TextView) convertView.findViewById(R.id.name);
			viewHolder.number=(TextView) convertView.findViewById(R.id.number);
			viewHolder.name.setText(list.get(position).getName());
			viewHolder.number.setText(list.get(position).getNumber());
		}
		return convertView;
	}
	public class ViewHolder{
		TextView name;
		TextView number;
	}
}
MainActivity中listview加载适配器 并为其添加点击监听事件
package com.example.getphonenumber;

import java.util.ArrayList;
import java.util.List;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnItemClickListener {
	private ListView lv;
	private MyAdapter adapter;
	private GetPhoneNumberFromMobile getPhoneNumberFromMobile;
	private List list = new ArrayList();

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		lv = (ListView) findViewById(R.id.listView1);
		getPhoneNumberFromMobile = new GetPhoneNumberFromMobile();
		list = getPhoneNumberFromMobile.getPhoneNumberFromMobile(this);
		adapter = new MyAdapter(list, this);
		lv.setAdapter(adapter);
		lv.setOnItemClickListener(this);
	}

	@Override
	public void onItemClick(AdapterView parent, View view, int position,
			long id) {
		// TODO Auto-generated method stub
		String number = list.get(position).getNumber();
		Intent intent = new Intent();
		intent.setAction("android.intent.action.CALL");
		intent.addCategory(Intent.CATEGORY_DEFAULT);
		intent.setData(Uri.parse("tel:"+number));
		startActivity(intent);
	}

}

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • android:获取手机号码和姓名实现通讯录

相关文章

  • 2017-08-23Android Studio混淆打包错误
  • 2017-05-26android MediaPlayer 错误代码(error code)总结 转载,androidmediaplayer
  • 2017-05-228.3.4 Paint API之—— Xfermode与PorterDuff详解(一)
  • 2017-05-26谷歌电子市场3--应用,谷歌电子市场3--
  • 2017-05-26Android 环境搭建 以及 第一个android 程序的编写,搭建android
  • 2017-05-26Android4.4访问外部存储,android4.4访问存储
  • 2017-05-26Java入门(二)——果然断更的都是要受惩罚的。。。,java受惩罚
  • 2017-05-26致DBA:为什么你经常犯错,是因为你做的功课不够
  • 2017-05-26kvm性能优化
  • 2017-05-26GridView嵌套在ScrollView里只有一行的问题,gridviewscrollview

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Kotlin的扩展函数:扩展Android框架(KAD 08),kotlinandroid
    • 浅谈Kotlin(二):基本类型、基本语法、代码风格,浅谈kotlin
    • 8.3.3 Paint API之—— MaskFilter(面具)
    • Linux内核系列—7.操作系统开发之中断和异常,linux内核
    • Android入门(九)文件存储与SharedPreferences存储,
    • Activity的生命周期,Activity生命周期
    • Android Studio Lambda Config,androidlambda
    • Android中的自定义控件(二),android自定义控件
    • 使用nginx作为tcp代理的安装配置例子
    • 关于Android项目隐藏标题栏的方法总结,android标题栏

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有