2017-01-26 3 views
0

I verwende diese Methode E-Mail-Adressen zu erhalten:Wie alle registrierten E-Mail-Adressen in Google Mail abrufen?

ContentResolver cr = SelectFile.this.getContentResolver(); 
      Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
      if (cur.getCount() > 0) { 
       while (cur.moveToNext()) { 
        String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
        Cursor cur1 = cr.query(
          ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, 
          ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
          new String[]{id}, null); 
        while (cur1.moveToNext()) { 
         //to get the contact names 
         String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
         String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
         ItemEmailSuggestion item = new ItemEmailSuggestion(email,name,id); 
         emailsContacts.add(item); 
         Log.i("CONTACTS",email+" "+name); 
        } 
        cur1.close(); 
       } 
      } 

(Quelle Get only email address from contact list Android)

, um eine Liste von E-Mail nach dem Eingang in einem editText vorzuschlagen.

Meine Implementierung funktioniert, aber die Liste der erhaltenen E-Mail-Adressen ist im Vergleich zu den in der Gmail-Anwendung registrierten E-Mails deutlich geringer.

Warum?

Natürlich werden die Berechtigungen korrekt gewährt (READ_CONTACT).

Ich habe leider kein Endgerät mehr unter kitkat, aber es scheint sich zu erinnern, dass dies nicht der Fall war und dass die Liste vergleichbar mit der von Gmail war.

Derzeit getestet unter Android 21,22,23,24.

danken Sie im Voraus

Antwort

0

Nicht alle auf dem Gerät gespeicherten E-Mails an den realen Kontakte mit Namen gehören, können Sie für alle E-Mails von E-Mail Tabelle direkt abfragt versuchen, und wenn das funktioniert, kann Sie in Namen füllen für diejenigen, die Namen in einer zweiten Abfrage haben.

 cr.query(Email.CONTENT_URI,null, null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       String email = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       Log.i("CONTACTS",email); 
      } 
      cur.close(); 
     } 
Verwandte Themen