Android联系人表问题
在我的应用程序中,用户可以单击手机中的联系人,然后查看他的联系人列表。我测试了我的HTC没有问题。然后我在中兴通讯上进行了测试,一件奇怪的事情出现了:当我点击一些人查看他们的联系表时,另一个人的联系表出现了。还有一个功能可以在我没有遇到任何问题的情况下给这些人打电话。例如,我点击Tim Burton查看他的联系表,得到Tim Burton的联系表。然后我点击布鲁斯·威利斯,得到马克斯·佩恩的联系表 可能最重要的是,中兴通讯的联系人是从塞班(Symbian)的旧手机中输入的,这可能会导致某种问题。所以布鲁斯·威利斯可能是从那部手机进口的,手机的主人不知道。 我在另一家没有导入联系人的中兴通讯上测试了该应用程序。接触表没有问题。因此,要么我的代码需要改进,要么这是一个bug 以下是我跳转到所选联系人的联系人表的代码: name1变量具有所选联系人的名称,例如Bruce WAndroid联系人表问题,android,contact,Android,Contact,在我的应用程序中,用户可以单击手机中的联系人,然后查看他的联系人列表。我测试了我的HTC没有问题。然后我在中兴通讯上进行了测试,一件奇怪的事情出现了:当我点击一些人查看他们的联系表时,另一个人的联系表出现了。还有一个功能可以在我没有遇到任何问题的情况下给这些人打电话。例如,我点击Tim Burton查看他的联系表,得到Tim Burton的联系表。然后我点击布鲁斯·威利斯,得到马克斯·佩恩的联系表 可能最重要的是,中兴通讯的联系人是从塞班(Symbian)的旧手机中输入的,这可能会导致某种问题。
infobtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0)
{
while (cur.moveToNext()) {
id_contact = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
name_contact = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (name_contact.equals(name1))
{
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id_contact}, null);
id_contact2 = id_contact;
while (pCur.moveToNext()){
}
pCur.close();
}
}
Intent intent_contacts = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people/" + id_contact2));
startActivity(intent_contacts);
}
}
});
提前感谢,
我找到了路。原因是我使用了不推荐的意图。这是正确的代码:
String contactid26 = null;
ContentResolver contentResolver = getContentResolver();
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phonenumintolist));
Cursor cursor =
contentResolver.query(
uri,
new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID},
null,
null,
null);
if(cursor!=null) {
while(cursor.moveToNext()){
String contactName = cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME));
contactid26 = cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup._ID));
}
cursor.close();
}
if (contactid26 == null)
{
Toast.makeText(DetailedCallHistory.this, "No contact found associated with this number", Toast.LENGTH_SHORT).show();
}
else
{
Intent intent_contacts = new Intent(Intent.ACTION_VIEW, Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(contactid26)));
//Intent intent_contacts = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people/" + contactid26)); //deprecated!
startActivity(intent_contacts);
}