2016-08-08 4 views
0

ユーザーが選んだ連絡先から電話番号を取得するにはどうすればいいですか?私は<code>onclick</code>では、ユーザが選択した連絡先の名前ではなく、PHONENUMBER</p> <p>取得することができています

Intent intent = new Intent(Intent.ACTION_PICK,    
ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent,PICK_CONTACT); 

PICK_CONTACTは1その私のrequestcode

その後、等しいだけint型の値であり、 :

@Override 
protected void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
    if (reqCode == PICK_CONTACT) { 
     if (resultCode == AppCompatActivity.RESULT_OK) { 

      Uri contactData = data.getData(); 

      Cursor c = getContentResolver().query(contactData, null, null, null, null); 
      if (c.moveToFirst()) { 
       String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
        contactadder.setText(name); 


       c.close(); 

      } 

答えて

0

これはおそらく私の仕事の少しスニペットです正しい方向を得る。 Androidのデータベースとのやりとりは文書化されておらず、適切な方法や値を見つけるのは難しいです。あなたが理解するためにもっと援助が必要な場合は、ただ答えるだけです。ビジネス関連のデータを取り除いたので、このようにコンパイルされません。簡単な投稿のためだけに!

public static final String[] PROJECTION ={ 

       ContactsContract.Data.MIMETYPE, 
       ContactsContract.Data.DATA1, 
       ContactsContract.Data.DATA2, 
       ContactsContract.Data.DATA3, 
       ContactsContract.Data.DATA4, 
       ContactsContract.Data.DATA5, 
       ContactsContract.Data.DATA6, 
       ContactsContract.Data.DATA7, 
       ContactsContract.Data.DATA8, 
       ContactsContract.Data.DATA9, 
       ContactsContract.Data.DATA10, 
       ContactsContract.Data.DATA11, 
       ContactsContract.Data.DATA12, 
       ContactsContract.Data.DATA13, 
       ContactsContract.Data.DATA14, 
       ContactsContract.Data.DATA15 
     }; 

private static final int MIMETYPE_COLUMN=0; 
private static final int DATA_COLUMN=1; 
private static final int DATATYPE_COLUMN=2; 

private static final String SELECTION = ContactsContract.Data.CONTACT_ID + " = ?"; 

public static ContactWrapper localContact(long contactId){ 

    Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,PROJECTION, SELECTION, new String[]{String.valueOf(contactId)}, null); 

    ContactWrapper wrapper = new ContactWrapper(contact); 
    if(cursor==null){ 
     return wrapper; 
    } 
    while(cursor.moveToNext()){ 

     String mime=cursor.getString(MIMETYPE_COLUMN); 
     if (mime.equals(ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)) { 
      contact.setU8sDisplayName(cursor.getString(DATA_COLUMN)); 

     } else if (mime.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) { 
      putPhoneNumber(contact, cursor); 

     } else if (mime.equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) { 
      putEmail(contact, cursor); 

     } else if (mime.equals(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)) { 
      putAddress(contact, cursor); 

     }else if (mime.equals(ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE)) { 
      contact.setU8sSIPAddress(cursor.getString(DATA_COLUMN)); 
     }else if (mime.equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)) { 
      wrapper.setImageBinaryString(getContactPhotoBase64(contactId)); 
     } 

    } 
    cursor.close(); 
    return wrapper; 
} 
private static void putPhoneNumber(ContactWrapper contact,Cursor data){ 

    switch (data.getInt(DATATYPE_COLUMN)){ 
     case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
      contact.setU8sPhoneHome(data.getString(DATA_COLUMN)); 
      break; 
     case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
      contact.setU8sPhoneMobile(data.getString(DATA_COLUMN)); 
      break; 
     case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
      contact.setU8sPhoneBusiness(data.getString(DATA_COLUMN)); 
      break; 

    } 

} 
+0

得るためにあなたが見ることができるが、コードのちょうど1行か2行が存在してはならないと私は、ユーザーがクリックした連絡先の番号と名前を取得できるようにしたい、私は名前を得ましたその連絡先の番号も?それはちょうど私のifステートメントに固執することができます@Henning –

+0

しかし、あなたが見ることができるように、通常、連絡先がいくつか持つことができる "the"番号はありません。また、最初の行に名前が含まれていることもありますが、これは確かではありません。あなたの結果セットを裁断し、行の色を印刷してみてください。おそらく、あなたは必要なものを見ることができます –

関連する問題