【问题标题】:Cannot get email from ContactsContract无法从 ContactsContract 收到电子邮件
【发布时间】:2015-06-27 18:17:45
【问题描述】:

无论我尝试什么,它都不起作用。 我已经尝试过使用谷歌搜索并使用过这里发布的许多示例,但我仍然不断收到 indexOutOfBoundsException。

这是我的代码 sn-p。

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);

谁能告诉我我做错了什么?

【问题讨论】:

    标签: java android uri contactscontract


    【解决方案1】:

    类似问题:Android - Cursor not finding Column

    您的代码似乎缺少这个:

    cursor.moveToFirst();
    

    【讨论】:

      【解决方案2】:

      这段代码对我有用:

          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());
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多