Holen Sie sich nur E-Mail-Adresse aus der Kontaktliste Android

Ich möchte nur die Kontaktnamen anzeigen, deren E-Mail-Adresse vorhanden ist. Andernfalls sollte dieser Kontaktname nicht in List angezeigt werden. Wie kann ich das machen? Kann mir bitte jemand helfen?

  • Verwenden Sie HttpURLConnection und HttpsURLConnection, um eine Verbindung zu einem https?
  • Wie kann mein Blick auf ein Mousewheel reagieren?
  • Programmatisch die Höhe auf LayoutParams als dichteunabhängige Pixel einstellen
  • Proguard Obfuskation brechen Simplexml
  • Android-Anwendung in nodejs
  • So deaktivieren Sie Elemente in einer Listenansicht?
  • Android, Gradle. Wie kann man Applikationen erstellen und Tests aus der Testanwendung ausführen
  • Android getResource () undefined Fehler
  • So aktualisieren Sie die Kontaktnummer mit Android
  • Mehrfache Bluetooth Verbindung
  • Wie benutzt man getString () auf static String vor onCreate ()?
  • Verwirrung Cordova Symbole und Splash-Screen-Verzeichnis
  • 6 Solutions collect form web for “Holen Sie sich nur E-Mail-Adresse aus der Kontaktliste Android”

    public ArrayList<String> getNameEmailDetails(){ ArrayList<String> names = new ArrayList<String>(); ContentResolver cr = 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)); Log.e("Name :", name); String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); Log.e("Email", email); if(email!=null){ names.add(name); } } cur1.close(); } } return names; } 

    Die obige Methode gibt einen Arraylist von Namen zurück, der eine E-Mail-ID hat.

    Hier ist meine super schnelle Abfrage, um E-Mail-Adressen zu ziehen. Es ist viel schneller als das Ziehen aller Kontaktspalten, wie von anderen Antworten vorgeschlagen …

     public ArrayList<String> getNameEmailDetails() { ArrayList<String> emlRecs = new ArrayList<String>(); HashSet<String> emlRecsHS = new HashSet<String>(); Context context = getActivity(); ContentResolver cr = context.getContentResolver(); String[] PROJECTION = new String[] { ContactsContract.RawContacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.PHOTO_ID, ContactsContract.CommonDataKinds.Email.DATA, ContactsContract.CommonDataKinds.Photo.CONTACT_ID }; String order = "CASE WHEN " + ContactsContract.Contacts.DISPLAY_NAME + " NOT LIKE '%@%' THEN 1 ELSE 2 END, " + ContactsContract.Contacts.DISPLAY_NAME + ", " + ContactsContract.CommonDataKinds.Email.DATA + " COLLATE NOCASE"; String filter = ContactsContract.CommonDataKinds.Email.DATA + " NOT LIKE ''"; Cursor cur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, filter, null, order); if (cur.moveToFirst()) { do { // names comes in hand sometimes String name = cur.getString(1); String emlAddr = cur.getString(3); // keep unique only if (emlRecsHS.add(emlAddr.toLowerCase())) { emlRecs.add(emlAddr); } } while (cur.moveToNext()); } cur.close(); return emlRecs; } 

    Ich habe versucht, den Code von 'Agarwal Shankar', aber es dauerte etwa 4 Sekunden, um Kontakte auf meinem Testgerät zu bekommen, und dieser Code dauerte etwa 0,04 Sek. Dieser schnellere Code habe ich in die SaluSafe App aufgenommen. Download SaluSafe von Google Play .

    Eine andere Lösung.

     private static final Uri URI_CONTACT_DATA = ContactsContract.Data.CONTENT_URI; private static final String COLUMN_EMAIL = ContactsContract.CommonDataKinds.Email.ADDRESS; private static final String COLUMN_DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME_PRIMARY; private static final String COLUMN_MIMETYPE = ContactsContract.Data.MIMETYPE; private static final String[] PROJECTION = { COLUMN_DISPLAY_NAME, COLUMN_EMAIL, COLUMN_MIMETYPE }; private Cursor getCursor() { ContentResolver resolver = context.getContentResolver(); String selection = COLUMN_MIMETYPE + "=?"; final String[] selectionArgs = {ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE}; return resolver.query(URI_CONTACT_DATA, PROJECTION, selection, selectionArgs, null); } 

    Das Problem ist, dass die Tabelle bei ContactsContract.Contacts.CONTENT_URI die gesamte Kontaktdatenbank enthält . Dazu gehören Telefonnummern, E-Mails, Organisationen und sogar ganz benutzerdefinierte Daten, so dass Sie es nicht verwenden können, ohne mit ContactsContract.Data.MIMETYPE zu filtern. Eine Zeile in dieser Datenbank enthält einen Wert (oder Werte, sie hat 15 generische Spalten), die sich auf ein bestimmtes Konto beziehen, also musst du sie selbst gruppieren. Ich brauchte dies, um E-Mails automatisch zu vervollständigen, so dass das Format (E-Mail pro Zeile) perfekt war.

     if (cur.getCount() > 0) { while (cur.moveToNext()) { String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); Cursor emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id},null); while (emailCur.moveToNext()) { String email = emailCur.getString( emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); Log.e("Email",name+" "+email); } emailCur.close(); } } 

    Wenn Sie bereits die Kontakte und ihre E-Mail-Adresse erhalten können (falls vorhanden), warum entfernen Sie einfach nicht die Kontakte ohne E-Mail-Adresse aus Ihrer Liste?

    Weitere Informationen zur Android-Kontakt-API finden Sie hier.

    Hier ist ein einfacher Weg, um E-Mail-ID von Kontakt aus der Kontaktliste zu bekommen. Sie müssen die Kontakt-ID des Benutzers in der unten beschriebenen Methode übergeben und es wird Ihnen die E-Mail-ID zurückgeben, falls vorhanden

      public String getEmail(String contactId) { String emailStr = ""; final String[] projection = new String[]{ContactsContract.CommonDataKinds.Email.DATA, ContactsContract.CommonDataKinds.Email.TYPE}; Cursor emailq = managedQuery(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, ContactsContract.Data.CONTACT_ID + "=?", new String[]{contactId}, null); if (emailq.moveToFirst()) { final int contactEmailColumnIndex = emailq.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA); while (!emailq.isAfterLast()) { emailStr = emailStr + emailq.getString(contactEmailColumnIndex) + ";"; emailq.moveToNext(); } } return emailStr; } 

    Und auch wenn du lernen willst, wie man Kontaktliste in deiner App erhält, folge diesem Link: zeige Kontaktliste in App android – trinitytuts

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.