当前位置: 代码迷 >> Android >> Android平台下读取通讯录联系人信息,出现有关问题了。求英雄解释。
  详细解决方案

Android平台下读取通讯录联系人信息,出现有关问题了。求英雄解释。

热度:102   发布时间:2016-05-01 21:58:43.0
Android平台下读取通讯录联系人信息,出现问题了。求英雄解释。。。
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);  



//TYPE_MOBILE : 手机号码TYPE_HOME : 住宅电话TYPE_WORK : 公司电话
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); 
}




这段代码,照理说得出的应该是Android手机本地的联系人信息而不是SIM卡的。可是在真机运行过程中得到的都是SIM卡内的联系人信息。。这是为什么呢。。。大家帮帮忙,看下啦。小弟拜谢。。。。

------解决方案--------------------
你的uri写错了,
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
这里的ContactsContract.Contacts.CONTENT_URI,指的就是从SIM中获取,
要从手机中获取应该用Phone.CONTENT_URI。
  相关解决方案