2012-04-24 4 views
0

나는이 주제가 여러 번 취급되었다고 생각할 수도 있지만 다른 내용입니다!GetAndroid 연락처 정보 (전화, 이름 등 ...)

내 응용 프로그램은 선택한 연락처에서 연락처 정보 (이름, 번호)를 가져오고 싶지만 그 이름 만 가져올 수는없고 그 번호를 얻을 수 없습니다.

@Override 
public void onClick(View v) { 
    // Opening Contacts Window as a Window 
    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, 
            ContactsContract.Contacts.CONTENT_URI); 
     // calling OnActivityResult with intent And Some contact for Identifie 
    startActivityForResult(contactPickerIntent, PICK); 
} 

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
    switch (reqCode) { 
    case (PICK) : 
     if (resultCode == Activity.RESULT_OK) { 
     Uri contactData = data.getData(); 
     Cursor c = managedQuery(contactData, null, null, null, null); 
     if (c.moveToFirst()) { 

      int indexName = c.getColumnIndex(
         ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
      int indexNumber = c.getColumnIndex(
         ContactsContract.CommonDataKinds.Phone.NUMBER); 
      nom = c.getString(indexName); 
      numero = c.getString(indexNumber); 


      //Visual confirm 
      Toast.makeText(this, "Contact " + nom +" enregistré!", 
          Toast.LENGTH_LONG).show(); 

      //Save in prefs: 
      SharedPreferences manager = 
         PreferenceManager.getDefaultSharedPreferences(this); 
      Editor editor = manager.edit(); 
      editor.putString("num", numero);    
      editor.putString("nom", nom); 
      editor.commit(); 

이름은 정확하지만 번호로 강제 종료됩니다.

하지만 다음과 같이 바꾸면 더 이상 강제 종료되지 않지만 숫자는 여전히 틀립니다 (0 또는 1).

int indexNumber = c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)+1; 

어떻게해야합니까? 위는 연락처 데이터베이스에서 모든 이름과 전화 번호를 retrun

답변

0
private void getDetails(){ 
     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
     String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER }; 
     Cursor names = getContentResolver().query(uri, projection, null, null, null); 

     int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
     int indexNumber = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
     names.moveToFirst(); 
     do { 

      String name = names.getString(indexName); 
      Log.e("Name new:", name); 
      String number = names.getString(indexNumber); 
      Log.e("Number new:","::"+number); 

     } while (names.moveToNext()); 
    } 

..

당신도 이메일 ID를 필요로하는 경우 당신은 또한이 라인 :::

while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      Cursor email = cr.query( 
        ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, 
        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
          new String[]{id}, null); 
      while (email.moveToNext()) { 
       //to get the contact names 
       // if the email addresses were stored in an array 
       String emailid = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       Log.e("Email id ::", emailid); 
       String emailType = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
       Log.e("Email Type ::", emailType); 

      } 
      email.close(); 
     } 
추가
관련 문제