1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

CONTENT_URI nicht vorhanden - wie mache ich trotzdem Cursor-Query?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von sem_thesis, 10.04.2011.

  1. sem_thesis, 10.04.2011 #1
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Haaallo! :laugh:


    Ich hab' ein kleines API Problem, und zwar geht es um die Kategorie ContactsContract.CommonDataKinds: ContactsContract.CommonDataKinds | Android Developers


    Fall 1) Ich möchte die verschiedenen E-Mail Addressen eines Kontaktes aufsammeln:

    Code:
            public void queryAllEmailAddresses(int contactId) {
                final String[] projection = new String[] {
                        Email.DATA,                            // use Email.ADDRESS for API-Level 11+
                        Email.TYPE
                };
    
                final Cursor email = getContentResolver().query(
                        Email.CONTENT_URI,    
                        projection,
                        Data.CONTACT_ID + "=?",
                        new String[]{String.valueOf(contactId)},
                        null);
    
                if(email.moveToFirst()) {
                    final int contactEmailColumnIndex = email.getColumnIndex(Email.DATA);
                    final int contactTypeColumnIndex = email.getColumnIndex(Email.TYPE);
                    
                    while(!email.isAfterLast()) {
                        final String address = email.getString(contactEmailColumnIndex);
                        final String test3 = email.getString(contactTypeColumnIndex);
                        final String type = addressType(test3);                    
                        
                        email.moveToNext();
                    }
                    
                }
                email.close()
    
    Ok, ich kann über Email.CONTENT_URI auf alle im API gespeicherten Email-Daten zugreifen --> das funktioniert perfekt.

    Referenz: ContactsContract.CommonDataKinds.Email | Android Developers

    Fall 2) Ich möchte nun die verschiedenen Organizations (Variable COMPANY & TITLE) & Websites (Variable URL) eines Kontaktes aufsammeln.
    Die Dokus (ContactsContract.CommonDataKinds.Organization | Android Developers, ContactsContract.CommonDataKinds.Website | Android Developers) geben aber keine URIs an --> was mache ich nun?


    Da habe ich mal gedacht, ja ich kann ja ein DATA.CONTENT_URI nehmen und tatsächlich --> der hat alle WERTE ausgegeben (Nummer, Email, Addresse, Organizaton, Websites, usw.)

    Wie kann ich jetzt gezielt nur Website & Organization-Variblen sammeln?
     
  2. maniac103, 11.04.2011 #2
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Dafür musst du den MIME-Type der Data-Tabelle in der Selection entsprechend filtern, z.B. auf den Webseiten-MIME-Type.
     
    sem_thesis bedankt sich.
  3. sem_thesis, 11.04.2011 #3
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Danke! Hat perfekt funktioniert:
    Code:
            public void queryWebsites(int contactId) {
                
                final String[] projection = new String[] {
                        Website.URL
                };
                
                String where = Data.CONTACT_ID + " = ? AND " + Data.MIMETYPE + " = ?"; 
                
                String[] whereParameters = new String[]{
                        String.valueOf(contactId),
                        Website.CONTENT_ITEM_TYPE
                };
    
                final Cursor website = getContentResolver().query(
                        Data.CONTENT_URI,    
                        projection,
                        where,
                        whereParameters,
                        null);
    
                if(website.moveToFirst()) {
                    final int contactWebsiteColumnIndex = website.getColumnIndex(Website.URL);
                    
                    while(!website.isAfterLast()) {
                        final String url = website.getString(contactWebsiteColumnIndex);
    
                        Log.d(TAG, "Website: " + url);
                                            
                        website.moveToNext();
                    }
                    
                }
                website.close();
            }
    
    
    Referenz: android - Problems with ContactsContract.CommonDataKinds.StructuredName - Stack Overflow
     

Diese Seite empfehlen