Android 2.0 API 读取通讯录中电话号码的实例
2011-09-14 15:15
375 查看
import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.PhoneLookup; import android.widget.TextView; public class Activity01 extends Activity { public void onCreate(Bundle savedInstanceState) { TextView tv = new TextView(this); String string = ""; super.onCreate(savedInstanceState); //得到ContentResolver对象 ContentResolver cr = getContentResolver(); //取得电话本中开始一项的光标 Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); //向下移动一下光标 while(cursor.moveToNext()) { //取得联系人名字 int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME); String contact = cursor.getString(nameFieldColumnIndex); //取得电话号码 int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER); //此行会报错,返回值=-1 String number = cursor.getString(numberFieldColumnIndex); string += (contact+":"+number+"\n"); } cursor.close(); //设置TextView显示的内容 tv.setText(string); //显示到屏幕 setContentView(tv); } }
参考网上的资料,找到了正确读取联系人电话的方法:
android.app.Activity; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.PhoneLookup; import android.database.Cursor; import android.widget.TextView; import android.content.ContentResolver; public class Activity01 extends Activity { public void onCreate(Bundle savedInstanceState) { TextView tv = new TextView(this); String string = ""; super.onCreate(savedInstanceState); //得到ContentResolver对象 ContentResolver cr = getContentResolver(); //取得电话本中开始一项的光标 Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); //向下移动光标 while(cursor.moveToNext()) { //取得联系人名字 int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME); String contact = cursor.getString(nameFieldColumnIndex); //取得电话号码 String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null); while(phone.moveToNext()) { String PhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); string += (contact + ":" + PhoneNumber + "\n"); } } cursor.close(); //设置TextView显示的内容 tv.setText(string); //显示到屏幕 setContentView(tv);最后记得在AndroidManifest.xml声明读取联系人的API:<uses-permission android:name="android.permission.READ_CONTACTS"/>[/code]如果我们只想获取手机号如何操作呢?
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);把以上语句改为:
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId + " AND " + ContactsContract.CommonDataKinds.Phone.TYPE + "=" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, null, null);
ContactsContract.CommonDataKinds.Phone.TYPE 表示联系人电话的类型,主要对应如下: TYPE_MOBILE : 手机号码 TYPE_HOME : 住宅电话 TYPE_WORK : 公司电话
原文链接:/article/5519119.html
相关文章推荐
- Android 2.0 API 读取通讯录中电话号码的实例
- [转载] Android 2.3.3 API 读取通讯录中电话号码的实例
- [转载] Android 2.3.3 API 读取通讯录中电话号码的实例
- android中读取通讯录中的联系人名字和电话方法(注意版本2.0之前,之后有差别)
- [Android实例] 读通讯录源码。学会了列表索引,自定义滑块等
- Android实例-读取设备联系人(XE8+小米2)
- android 读取手机通讯录并显示listview
- Android编程实现通讯录中联系人的读取,查询,添加功能示例
- Android实例解析——通讯录
- Android获取电话号码的实例
- Android4.X读取SIM卡短信和联系人相关类实例分析
- android源码分析之Camera API2.0
- Android 2.0读取所有联系人姓名与电话
- android读取手机通讯录
- Android sd卡读取数据库实例代码
- Android--读取通讯录并添加联系人
- 今天遇到了一个问题,将应用程序从服务器读取到的电话号码存储到通讯录中,必须在真机上跑,有点小激动。
- Android local.properties 文件读取实例详解
- Android Contacts (android通讯录读取)-content provider
- Android 2.0以后的Contacts API--ContactsContract