如何从android电话本中选择联系人号码到我的应用程序中?

问题描述:

所有 我想利用数量从机器人的电话簿在我的应用程序的数据库.. 我有下面的代码尝试过,但人在这里我得到名称,而不是我想从电话簿号码,并想将其存储在我的数据库..如何实现这一目标????任何一个可以指导我..如何从android电话本中选择联系人号码到我的应用程序中?

@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 c = managedQuery(contactData, null, null, null, null); 

       if (c.moveToFirst()){ 
        // other data is available for the Contact. I have decided 
        // to only get the name of the Contact. 
        String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.CONTENT_TYPE)); 
        Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 

感谢Advance--

试试这个代码,

@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 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(); 
      String cNumber = phones.getString(phones.getColumnIndex("data1")); 
      } 
      } 
     } 
    } 
+0

它不工作.....什么是数据1 ??? – swan

+0

是联系人的数据库列名.. –

+0

看到我更新的答案 –

我知道这是一个老问题,但我认为下面的资源 Android是在这个问题上非常有帮助。 “奖金”部分是raj寻找的确切代码。我认为这个链接对未来看到这个问题的任何人都有帮助,特别是如果你不了解CapDroid的代码片段。

http://developer.android.com/training/basics/intents/result.html

+0

在那里很好的例子!谢谢 – Mugen

这将帮助你:

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

    try { 
     if (resultCode == Activity.RESULT_OK) { 
      Uri contactData = data.getData(); 
      Cursor cur = managedQuery(contactData, null, null, null, null); 
      ContentResolver contect_resolver = getContentResolver(); 

      if (cur.moveToFirst()) { 
       String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 
       String name = ""; 
       String no = ""; 

       Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); 

       if (phoneCur.moveToFirst()) { 
        name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
        no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       } 

       Log.e("Phone no & name :***: ", name + " : " + no); 
       txt.append(name + " : " + no + "\n"); 

       id = null; 
       name = null; 
       no = null; 
       phoneCur = null; 
      } 
      contect_resolver = null; 
      cur = null; 
      //      populateContacts(); 
     } 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
     Log.e("IllegalArgumentException::", e.toString()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.e("Error :: ", e.toString()); 
    } 
}