2011-09-15 7 views
0

名前を選択できますが、名前に電話番号が1つ以上関連付けられている場合は、電話番号を選択する方法が混乱します。以下は私のコードです。連絡先リストから名前と電話番号を選択してアプリケーションに表示したい

public class getName extends Activity { 
//permission 
//<uses-permission android:name="android.permission.READ_CONTACTS" /> 
/** Called when the activity is first created. */ 
private static final int PICK_CONTACT = 0; 
EditText Name; 
EditText Phone; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Name = (EditText)findViewById(R.id.editText1); 
    Phone = (EditText)findViewById(R.id.editText2); 

    Button b = (Button) findViewById(R.id.button1); 
    b.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // to read contacts add android.permission.READ_CONTACTS 
      Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI); 
      //intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
      startActivityForResult(intent, 0); 
     } 
    }); 
} 

public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
    ContentResolver cr = getContentResolver(); 
    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 name = c.getString(c.getColumnIndexOrThrow(People.Phones.NAME)); 
       Name.setText(name); 

       Uri uri = data.getData(); 
       Cursor cursor=managedQuery(uri, null, null, null, null); 

       while (cursor.moveToNext()) { 
        String contactId = cursor.getString(cursor.getColumnIndex( 
          ContactsContract.Contacts._ID)); 
        String hasPhone = cursor.getString(cursor.getColumnIndex( 
          ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
        if (Boolean.parseBoolean(hasPhone)) { 
         // You know have the number so now query it like this 
         Cursor phones = getContentResolver().query( 
           ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
           null, 
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, 
           null, null); 
         while (phones.moveToNext()) { 
          String phoneNumber = phones.getString( 
            phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));    
         } 
         phones.close(); 
        } 
       } 




      } 

     } 
    break; 
    } 

} 

}

答えて

0

あなたはボタンで二行のコメントを解除した場合のonClickあなたは連絡先の名前とその番号のリストが表示されます。あなたは直接番号を選択することができます

Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI); 
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
関連する問題