2015-11-27 148 views

回答

-1
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_usercontact); 

    class MainActivity extends Activity { 
     private final int REQUEST_CODE=99; 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.content_usercontact); 
      EditText editText = (EditText)findViewById(R.id.editTextcontacts1); 
      EditText editText1 = (EditText)findViewById(R.id.editTextcontacts2); 
      EditText editText2 = (EditText)findViewById(R.id.editTextcontacts3); 
      editText.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
        startActivityForResult(intent, REQUEST_CODE); 
       } 
      }); 

      editText1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
        startActivityForResult(intent, REQUEST_CODE); 
       } 
      }); 

      editText2.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
        startActivityForResult(intent, REQUEST_CODE); 
       } 
      }); 

     } 


     @Override 
     public void onActivityResult(int reqCode, int resultCode, Intent data) { 
      super.onActivityResult(reqCode, resultCode, data); 
      switch (reqCode) { 
       case (REQUEST_CODE): 
        if (resultCode == Activity.RESULT_OK) { 
         Uri contactData = data.getData(); 
         Cursor c = getContentResolver().query(contactData, null, null, null, null); 
         if (c.moveToFirst()) { 
          String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID)); 
          String hasNumber = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
          String num = ""; 
          if (Integer.valueOf(hasNumber) == 1) { 
           Cursor numbers = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); 
           while (numbers.moveToNext()) { 
            num = numbers.getString(numbers.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
            Toast.makeText(MainActivity.this, "Number=" + num, Toast.LENGTH_LONG).show(); 
           } 
          } 
         } 
         break; 
        } 
      } 
     } 

    } 
} 

}

+0

這是作爲答案發布的,但它不會嘗試回答問題。它應該可能是編輯,評論,另一個問題,或者完全刪除。 –

2

的onClick代碼

Intent pickContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
pickContact.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE) 
startActivityForResult(pickContact, 1); 

onActivityResult代碼

Uri contactData = data.getData(); 
Cursor c = getContentResolver().query(contactData, null, null, null, null); 
if (c.moveToFirst()) { 
        int phoneIndex = getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
        String num = c.getString(phoneIndex); 
        Toast.makeText(MainActivity.this, "Number=" + num, Toast.LENGTH_LONG).show(); 
      } 
1

要獲取聯繫人姓名,號碼以及電子郵件也從你的聯繫人列表中選擇聯繫人,你只需要簡單地添加這個代碼。

private Button btn; 
private String TAG = "Contacts"; 
private static final int RESULT_PICK_CONTACT = 1; 


btn.setOnClickListener(new View.OnClickListener() {  
@Override 
public void onClick(View v) { 
selectSingleContact(); 
    } 
}); 

private void selectSingleContact() { 
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT); 
}  

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
// check whether the result is ok 
if (resultCode == RESULT_OK) { 
    // Check for the request code, we might be usign multiple startActivityForResult 
    switch (requestCode) { 
     case RESULT_PICK_CONTACT: 
      contactPicked(data); 
      break; 
    } 
} else { 
    Log.e("ContactFragment", "Failed to pick contact"); 
     } 
} 

private void contactPicked(Intent data) { 

Uri uri = data.getData(); 
Log.i(TAG, "contactPicked() uri " + uri.toString()); 
Cursor cursor; 
ContentResolver cr = getActivity().getContentResolver(); 

try { 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    if (null != cur && cur.getCount() > 0) { 
     cur.moveToFirst(); 
     for (String column : cur.getColumnNames()) { 
      Log.i(TAG, "contactPicked() Contacts column " + column + " : " + cur.getString(cur.getColumnIndex(column))); 
     } 
    } 

    if (cur.getCount() > 0) { 
     //Query the content uri 
     cursor = getActivity().getContentResolver().query(uri, null, null, null, null); 

     if (null != cursor && cursor.getCount() > 0) { 
      cursor.moveToFirst(); 
      for (String column : cursor.getColumnNames()) { 
       Log.i(TAG, "contactPicked() uri column " + column + " : " + cursor.getString(cursor.getColumnIndex(column))); 
      } 
     } 

     cursor.moveToFirst(); 
     id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
     Log.i(TAG, "contactPicked() uri id " + id); 
     String contact_id = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID)); 
     Log.i(TAG, "contactPicked() uri contact id " + contact_id); 
     // column index of the contact name 
     name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     // column index of the phone number 
     phoneNo = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     //get Email id of selected contact.... 
     Log.e("ContactsFragment", "::>> " + id + name + phoneNo); 

     Cursor cur1 = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, 
       ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{contact_id}, null); 

     if (null != cur1 && cur1.getCount() > 0) { 
      cur1.moveToFirst(); 
      for (String column : cur1.getColumnNames()) { 
       Log.i(TAG, "contactPicked() Email column " + column + " : " + cur1.getString(cur1.getColumnIndex(column))); 
       email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
      } 

      //HERE YOU GET name, phoneno & email of selected contact from contactlist..... 
      Log.e("setcontactDetails","::>>" + name+"\nPhoneno:" + phoneNo+"\nEmail: " + email); 
     } else { 
      Log.e("setcontactDetails","::>>" + name+"\nPhoneno:" + phoneNo+"\nEmail: " + email); 
     } 
    } 
} catch (IndexOutOfBoundsException e) { 
    e.printStackTrace(); 
    } 
} 

而且將權限添加到您的AndroidManifest.xml 它爲我,希望它爲你的作品也會。

+0

這是非常低效的。 moveToFirst返回一個布爾值,如果爲null,則返回false。沒有必要保持null檢查遊標併發出無關的查詢。 – LoungeKatt

相關問題