2012-06-14 3 views
1

Детали контактов не отображаются должным образом, используя этот код. Я пытаюсь получить доступ к Имя, номер и электронный идентификатор с использованием Цель. Имя и номер отображаются только при нажатии кнопки, но не в сообщении электронной почты. Нет ошибки в проекте. Работает хорошо. В моем XML-файле есть только одна кнопка.Неправильная настройка с использованием Intent?

общественного класса GetDetails расширяет активность {

/** Called when the activity is first created. */ 
private static final int CONTACT_PICKER_RESULT = 1001; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

     Button Btn = (Button)findViewById(R.id.getContacts); 
     Btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
       startActivityForResult(i, CONTACT_PICKER_RESULT); 

      } 
     }); 
    } 

    protected void onActivityResult(int reqCode, int resultCode, Intent data) { 
     super.onActivityResult(reqCode, resultCode, data); 
     if(resultCode == RESULT_OK) { 
      switch (reqCode) { 
      case CONTACT_PICKER_RESULT: 
       Cursor cursor = null; 
       Cursor emails = null; 
       String number = ""; 
       String emailID = ""; 
       try { 

        Uri result = data.getData(); 

        //get the id from the uri 
        String id = result.getLastPathSegment(); 

        //query 
        cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone._ID + " = ? " , new String[] {id}, null); 

        int numberIdx = cursor.getColumnIndex(Phone.DATA); 
        if(cursor.moveToFirst()) { 
         number = cursor.getString(numberIdx); 

        } else { 

        } 
         emails = getContentResolver().query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null); 
        int num = emails.getColumnIndex(Email.DATA); 
        if(emails.moveToFirst()) { 
         emailID = emails.getString(num); 

        } else { 

        } 

       } catch (Exception e) { 
        //failed 
       } finally { 
        if (cursor!=null) { 
         cursor.close(); 
        } 


       } 

      } 
     } 
    } 
} 

Как решить эту ситуацию?

+0

http://stackoverflow.com/questions/11032030/how-to-get-contact-information-in-android Я ответил здесь –

+0

ответ будет получен с вашего имени и электронной почты? – BigBoss

+0

Да, он будет извлекать –

ответ

0

Заменить строку:

emails = getContentResolver().query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null); 

с этой линии:

emails = getContentResolver().query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = ?", new String[]{id}, null); 
+0

Арун, никаких изменений нет? – BigBoss

+0

Вы можете видеть имя и номер? –

+0

Несомненно, я получу имя и номер, после того как я попытаюсь получить электронную почту, в то время ничего не будет отображаться. Я думаю, что небольшая ошибка в запросе. – BigBoss

Смежные вопросы