关于查询手机自带通讯录中联系人得电话号码的问题

陈怡欣 发布于 2012/02/20 09:18
阅读 4K+
收藏 0

你好。我现在遇到一个这样的问题,我在android应用中查询模拟器自带通讯录中联系人的姓名,电话号码,能够成功查到数据。但是将应用安装在中兴手机上测试时,只能查询到手机自带通讯录中的联系人姓名,电话号码为null。现在不能确定问题出在哪里,在模拟器上测试是能查询到联系人的姓名、号码都 没问题的。

我猜可能是People.Number这一列出问题了,但是又不太可能啊。

请多指教。

加载中
0
鉴客
鉴客
跟权限有关系吗?
陈怡欣
陈怡欣
如果跟权限有关系的话,怎么可以查到联系人的姓名,但是查不到电话号码呢?
0
迷途d书童
迷途d书童
String str = "";
//得到ContentResolver对象
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor = cr.query(Contacts.CONTENT_URI, null, null, null, null);
while(cursor.moveToNext()){
	// 取得联系人名字
	int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
	String name = cursor.getString(nameFieldColumnIndex);
	str +=  name;
			
	// 取得联系人ID
	String contactId = cursor.getString(cursor.getColumnIndex(Contacts._ID));
	Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
					+ contactId, null, null);

	// 取得电话号码(可能存在多个号码)
	while (phone.moveToNext())
	{
		String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
		str += (":" + strPhoneNumber);
	}
	str += "\n";
	phone.close();
}
cursor.close();

你用上面这段代码试试。

陈怡欣
陈怡欣
_ID can't be resolved to a field ; PhoneLookup can't be resolved to a variable ; ContactsContract can't be resolved to a variable; 引用你的代码,这几个地方eclipse提示编译不通过,改怎么解决呢?
0
陈怡欣
陈怡欣
问题解决了,谢谢大家。
0
scdqs
scdqs

你好,想问一个和Contact相关的问题,我用Phone.CONTENT_URI和ContactsContract.Contacts.CONTENT_URI这两个URI查出来的联系人都是手机和sim在一起的,我现在知道用Uri.parse("content://icc/adn");能查出sim卡得联系人,但是如果要只查手机里面的联系人该怎么办呢

陈怡欣
陈怡欣
这个,我也没试过。我试过哦
返回顶部
顶部