在我的应用中,用户可以点击手机中的联系人,然后查看他的联系表。我在没有问题的情况下测试了我的HTC。然后我在中兴通讯上进行了测试,出现了一个奇怪的事情:如果我点击某些人查看他们的联系表,另一个联系表出现在另一个人身上。还有一个功能是呼叫这些人,我没有遇到任何问题。所以例如我点击Tim Burton查看他的联系表,我得到了Tim Burton的联系表。然后我点击布鲁斯威利斯,我得到马克斯佩恩的联系表。
在中兴的情况下可能是必要的来自旧手机(使用Symbian)导入的联系人,这可能会导致某种问题。所以布鲁斯威利斯可能是从那部手机进口的(手机的主人不知道这一点)。 我在没有导入联系人的情况下在另一个中兴通联系表没有问题。所以要么我的代码需要改进,要么这是一个错误。
以下是我跳转到所选联系人的联系表的代码: ( name1 变量具有所选联系人的姓名,例如Bruce W)
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);
}
}
});
提前致谢,
erdomester
答案 0 :(得分:0)
我找到了方法。原因是我使用了弃用的意图。这是正确的代码:
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);
}