1

선택한 연락처의 이메일을 받기위한 코드를 작성하고 있지만 연락처를 선택하고 주요 활동으로 돌아와서 이메일을받을 수 없습니다 (토스트가 표시되지 않음) ...연락처에서 이메일을 가져올 수 없습니다.

public static final int PICK_CONTACT = 1; 

public void onclick(View view) { 
    Intent intent1 = new Intent(Intent.ACTION_PICK, 
      ContactsContract.Contacts.CONTENT_URI); 
    startActivityForResult(intent1,PICK_CONTACT); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode==PICK_CONTACT) { 
     try { 
      if(resultCode==Activity.RESULT_OK) { 
       Uri uri=data.getData(); 
       String[] projection = new String[] { 
        ContactsContract.Contacts._ID, 
        ContactsContract.Contacts.DISPLAY_NAME, 
        ContactsContract.CommonDataKinds.Email.DATA 
       }; 
       Cursor emailCur = 
        getContentResolver().query(uri, null, null, null,null); 
       emailCur.moveToFirst(); 
       String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
       Toast.makeText(MainActivity.this, 
         "The email is" +email, Toast.LENGTH_LONG).show(); 
       emailCur.close(); 
      } 
     } 
     catch(Exception e) { 
      e.getCause(); 
     } 
    } 
} 

답변

1

전자 메일 주소를 검색하려면 다른 쿼리를 수행해야합니다. get contact info from android contact picker

편집 :
확인이 답변 (이메일 주소에 대한 바닥 부분), 같은 문제가 코드 예제

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

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

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

    // ADD IF STATEMENTS HERE TO CHECK the requestCode, resultCode and data 

    Uri contactData = data.getData(); 
    Cursor c = getContentResolver().query(contactData, null, null, null, null); 

    // has result 
    if (c.moveToFirst()) { 
     String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID)); 

     // new query for the mail 
     Cursor emailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null); 

     // has result 
     if(emailCursor.moveToFirst()) { 
      String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
      String emailType = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 

      Log.d(getClass().getName(), "EMAIL = " + email); 
     } 

     emailCursor.close(); 
    } 

    c.close(); 
} 

그리고 매니페스트에 READ_CONTACTS 권한을 추가하는 것을 잊지 마세요.

+0

@ lukas String [] {id} ... 완전한 코드를 제공해 줄 수 있습니까 – user2429689

+0

확실히 편집 된 대답을 참조하십시오. – lukas

관련 문제