2015-04-20 4 views
2

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

Вот мой фрагмент кода.

Uri contactData = data.getData(); 



       String[] mProjection = 
         { 

           ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
           ContactsContract.CommonDataKinds.Phone.NUMBER, 
           ContactsContract.CommonDataKinds.Email.DATA 

         }; 



       Cursor c = getContentResolver().query(contactData,mProjection, null, null, null); 

       myEmail = c.getString(c.getColumnIndexOrThrow(mProjection[2])); 

       Log.d("EMAIL RESULT", myEmail); 

Может кто-нибудь сказать мне, что я делаю неправильно?

ответ

0

этот код работает для меня:

Cursor c; 

    String[] projection = new String[] 
      { ContactsContract.CommonDataKinds.Email._ID, 
        ContactsContract.CommonDataKinds.Email.DISPLAY_NAME_PRIMARY, 
        ContactsContract.CommonDataKinds.Email.ADDRESS 
      }; 

    CursorLoader cursorLoader = new CursorLoader(
      this, 
      ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
      projection, 
      null, 
      null, 
      null); 

    c = cursorLoader.loadInBackground(); 

    getEmails(c); 

и ваш метод getEmails:

private void getEmails(Cursor c) { 
     ContentResolver cr = getContentResolver(); 
     if (c.moveToFirst()) { 
      do { 
       String contactID = c.getString(c.getColumnIndex(
         ContactsContract.CommonDataKinds.Email._ID)); 
       String contactDisplayName = 
         c.getString(c.getColumnIndex(
           ContactsContract.CommonDataKinds.Email.DISPLAY_NAME_PRIMARY)); 
       String contactEmail = 
         c.getString(c.getColumnIndex(
           ContactsContract.CommonDataKinds.Email.ADDRESS)); 


      } while (c.moveToNext()); 
     } 
    } 

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

  • Нет связанных вопросов^_^