0

我试图在我的项目中使用以下方法从电话中选择联系人。它工作正常.....

  • 但在某些情况下我不会工作......例如:如果同名有多个数字,如个人/家庭......

  • 在这个阶段它只会选择第一个号码。所以我无法从我这里选择联系人。请给出解决方案......

代码在这里

 public void onActivityResult(int reqCode, int resultCode, Intent data) {
 super.onActivityResult(reqCode, resultCode, data);

 switch (reqCode) {
 case (PICK_CONTACT) :
   if (resultCode == Activity.RESULT_OK) {

     Uri contactData = data.getData();
     Cursor c =  managedQuery(contactData, null, null, null, null);
     if (c.moveToFirst()) {


         String id =c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

         String hasPhone =c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

           if (hasPhone.equalsIgnoreCase("1")) {
          Cursor phones = getContentResolver().query( 
                       ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
                       ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, 
                       null, null);
             phones.moveToFirst();
             cNumber = phones.getString(phones.getColumnIndex("data1"));

             System.out.println("number is:"+cNumber);
           }
         /*name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

         Textcontact.setText(name);*/

         edt.setText(cNumber);

     }
   }
   break;
 }
 }

谢谢...

4

1 回答 1

0

代替

phones.moveToFirst();

您可以浏览光标以获取更多项目

int colIndex = phones.getColumnIndex("data1");
while (phones.moveToNext()) {
    System.out.println("Found a number : " + phones.getString(colIndex));
}
于 2013-04-04T07:55:50.097 回答