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 に答える