2014-05-17 153 views
0

我已经开始为结果 代码的新意图活动startActivityForResult()后:检索联系人姓名和电话

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI); 

    startActivityForResult(contactPickerIntent, 1); 

现在我想要得到的电话号码:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == 1) { 

     if(resultCode == RESULT_OK){ 

      Uri contactUri = data.getData(); 

      String[] pN = {Phone.NUMBER}; 

      String[] pNa = {Phone.CONTACT_ID};//idk 

      Cursor cP = getContentResolver().query(contactUri, pN, null, null, null); 
      cP.moveToFirst(); 

      Cursor cPa = getContentResolver().query(contactUri, pNa, null, null, null); 
      cPa.moveToFirst(); 

      int numc = cP.getColumnIndex(Phone.NUMBER); 
      String num = cP.getString(numc); 

      int namec = cPa.getColumnIndex(Phone.CONTACT_ID);//idk 
      String name = cPa.getString(namec);//idk 

      Log.i("", name); 

     } 
     if (resultCode == RESULT_CANCELED) { 
      //DO OTHER STUFF 
     } 
    } 
} 

的电话号码是好的,但我未能检索联系人的GIVEN NAME!

+0

联络人的真名是'DISPLAY_NAME',不'CONTACT_ID' –

回答

1
Uri uri = data.getData(); 

     Cursor cursor = getContentResolver().query(uri, null, null, null, null); 

     cursor.moveToFirst(); 
     name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

     cursor.moveToFirst(); 
     number = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); 
1

试试这个代码,它可能会进行一些小改动帮...

static final int PICK_CONTACT_=1; 

    Intent intent_1 = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    startActivityForResult(intent_1, PICK_CONTACT_); 


    @Override 
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 cursor = managedQuery(contactData, null, null, null, null); 
    if (cursor.moveToFirst()) { 


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

     String hasPhone =cursor.getString(cursor.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("data_1")); 
      System.out.println("number is:"+cNumber); 
      } 
     String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 


    } 
    } 
    break; 
} 
} 
+0

让我查一下这个 – user3535778

+0

字符串hasPhone =光标.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));抛出错误 – user3535778

+0

这是因为,在你的情况下它是'数字'而不是'HAS_PHONE_NUMBER',所以你应该做一些小的修改以适应你的要求。 –

相关问题