Android联系人表问题

Android联系人表问题,android,contact,Android,Contact,在我的应用程序中,用户可以单击手机中的联系人,然后查看他的联系人列表。我测试了我的HTC没有问题。然后我在中兴通讯上进行了测试,一件奇怪的事情出现了:当我点击一些人查看他们的联系表时,另一个人的联系表出现了。还有一个功能可以在我没有遇到任何问题的情况下给这些人打电话。例如,我点击Tim Burton查看他的联系表,得到Tim Burton的联系表。然后我点击布鲁斯·威利斯,得到马克斯·佩恩的联系表 可能最重要的是,中兴通讯的联系人是从塞班(Symbian)的旧手机中输入的,这可能会导致某种问题。

在我的应用程序中,用户可以单击手机中的联系人,然后查看他的联系人列表。我测试了我的HTC没有问题。然后我在中兴通讯上进行了测试,一件奇怪的事情出现了:当我点击一些人查看他们的联系表时,另一个人的联系表出现了。还有一个功能可以在我没有遇到任何问题的情况下给这些人打电话。例如,我点击Tim Burton查看他的联系表,得到Tim Burton的联系表。然后我点击布鲁斯·威利斯,得到马克斯·佩恩的联系表

可能最重要的是,中兴通讯的联系人是从塞班(Symbian)的旧手机中输入的,这可能会导致某种问题。所以布鲁斯·威利斯可能是从那部手机进口的,手机的主人不知道。 我在另一家没有导入联系人的中兴通讯上测试了该应用程序。接触表没有问题。因此,要么我的代码需要改进,要么这是一个bug

以下是我跳转到所选联系人的联系人表的代码: 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);
                }

            }
         });
提前感谢,


我找到了路。原因是我使用了不推荐的意图。这是正确的代码:

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);
                    }