首先给大家展示下运行效果图:
由于通讯录在手机里是以数据库贮存的 所以我们可以通过一个方法
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<phoneinfo> list; public List<phoneinfo> getPhoneNumberFromMobile(Context context) { // TODO Auto-generated constructor stub list = new ArrayList<phoneinfo>(); 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; } }</phoneinfo></phoneinfo></phoneinfo>
自定义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<phoneinfo> list; private Context context; public MyAdapter(List<phoneinfo> 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; } }</phoneinfo></phoneinfo>
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<phoneinfo> list = new ArrayList<phoneinfo>(); 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); } }</phoneinfo></phoneinfo>
本文向大家介绍Android 手机获取手机号实现方法,包括了Android 手机获取手机号实现方法的使用技巧和注意事项,需要的朋友参考一下 最近做到一个项目,需要获取手机号。项目中使用的手机卡为电信卡,那么就以此为例吧。 网上不符合需求的方法 Google了一下,网上的做法如下: 添加权限: <uses-permissionandroid:nameuses-permissionandroid:na
本文向大家介绍js实现显示手机号码效果,包括了js实现显示手机号码效果的使用技巧和注意事项,需要的朋友参考一下 效果图: 代码如下: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!
本文向大家介绍Android实现仿通讯录侧边栏滑动SiderBar效果代码,包括了Android实现仿通讯录侧边栏滑动SiderBar效果代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现仿通讯录侧边栏滑动SiderBar效果代码。分享给大家供大家参考,具体如下: 之前看到某些应用的侧边栏做得不错,想想自己也弄一个出来,现在分享出来,当然里面还有不足的地方,请大家多多包
本文向大家介绍Android获取手机位置的实现代码,包括了Android获取手机位置的实现代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android获取手机位置的方法,供大家参考,具体内容如下 1、项目Src下创建...service包,然后新建GPSService类 2、AndroidManiFest.xml添加类 注意这个是service类型,很容易出错,即<servic
本文向大家介绍Android手机号注册、绑定手机号获取短信验证码实例,包括了Android手机号注册、绑定手机号获取短信验证码实例的使用技巧和注意事项,需要的朋友参考一下 本文写了一个常见的功能——手机app中注册或绑定手机号的获取验证码的功能,也就是短信验证功能 具体效果就是,你在注册界面填写手机号,点击获取验证码按钮,---然后会收到验证短信,填入验证码后点击注册按钮,如果验证正确就可以跳
本文向大家介绍iOS开发中使app获取本机通讯录的实现代码实例,包括了iOS开发中使app获取本机通讯录的实现代码实例的使用技巧和注意事项,需要的朋友参考一下 一、在工程中添加AddressBook.framework和AddressBookUI.framework 二、获取通讯录 1、在infterface中定义数组并在init方法中初始化 2、定义一个model,用来存放通讯录中的各个属性 新