E-post från ContactsContract?

Discussion in 'Frågor, support och diskussion' started by 3D-kreativ, Mar 9, 2013.

  1. 3D-kreativ

    3D-kreativ Infant Droid Medlem

    Joined:
    Feb 16, 2013
    Messages:
    9
    Likes Received:
    0

    MINA ENHETER

    Jag har kört fast rejält och behöver hjälp av forumets läsare för att komma vidare! Problemet jag har är att jag inte kan få fram en e-post adress för en kontakt i ContactsContract. Namn och telefonnummer funkar bra, men det är just e-post adressen som inte funkar!

    Jag skulle uppskatta om någon kunde kolla genom min kod och se vad det är jag har missat eller kanske gjort felaktigt.

    När jag kör denna class så händer det inget(toast meddelande visas ej) i följande kod, vilket är orsaken till att det inte blir någon sträng med e-post adressen. Varför är för mig en gåta! Jag har försökt med alla möjliga kombinationer! :(

    Code:
    while(emails.moveToNext()){
    contactEmailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
    Toast.makeText(Activity_3.this, contactEmailAddress, Toast.LENGTH_SHORT).show();
    }
    
    Här följer hela klassen med den fullständiga koden.
    Code:
    public class Activity_3 extends Activity {
    ListView listView;
    
    @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    		
    setContentView(R.layout.activity_3);
    listView = (ListView) findViewById(R.id.contactList);
    
    String[] projection = { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
    ContactsContract.CommonDataKinds.Phone.NUMBER,
    ContactsContract.CommonDataKinds.Phone._ID };
    
    Cursor cursor1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, null, null, null);
    	
    // From column
    String[] fromColumn = { ContactsContract.Contacts.DISPLAY_NAME };
    // To view
    int[] toView = { R.id.contactItem };
    
    startManagingCursor(cursor1);
    
    ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.activity_3, cursor1, fromColumn, toView);
    
    listView.setAdapter(adapter);
    
    listView.setOnItemClickListener(new OnItemClickListener() {
    
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
    
    String[] projection = { ContactsContract.CommonDataKinds.Phone._ID, 						ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 						ContactsContract.CommonDataKinds.Phone.NUMBER,
    };
    
    Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, null, null, null);
    				
    cursor.moveToPosition(position);
    
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
    String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
    String contactNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    				
    String pos = Integer.toString(position);
    				
    String contactEmailAddress = "?";	
    //Email
    Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=" + contactId,  null,  null);
    				
    while(emails.moveToNext()){
    contactEmailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
    Toast.makeText(Activity_3.this, contactEmailAddress, Toast.LENGTH_SHORT).show();
    }
    emails.close();
    				
    Toast.makeText(Activity_3.this, pos + " " + contactId + " " + contactName + " " + contactNumber + " " + contactEmailAddress, Toast.LENGTH_SHORT).show();
    				
    }
    });
    }
    }
    
     
  2. e7andy

    e7andy Professional Droid Hedersmedlem

    Joined:
    Oct 14, 2009
    Messages:
    2 349
    Likes Received:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    Eftersom du inte får någon toast alls så är alltså emails tom. while-loopen behöver vi inte kolla på alls än utan felet måste ligga högre upp.

    Testa att ta ut alla mailadresser och kolla om du får ut några alls, dvs. ta bort selection-argumentet:
    Code:
    //Email
    Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, null,  null,  null);
     
  3. 3D-kreativ

    3D-kreativ Infant Droid Medlem

    Joined:
    Feb 16, 2013
    Messages:
    9
    Likes Received:
    0

    MINA ENHETER

    Tack för svar! Testade detta och då visades samtliga kontakters mailadresser, så det finns mailadresser, men frågan är bara hur man ska få fram en emailadress för en vald kontakt?

    Eftersom min kod inte funkar, undrar jag om det går att göra på något att sätt för att få det att funka? Allt jag vill få fram är namn, nummer och mailadress!

    Någon som har något förslag?

    Tacksam för hjälp!
     
    Last edited: Mar 9, 2013
  4. e7andy

    e7andy Professional Droid Hedersmedlem

    Joined:
    Oct 14, 2009
    Messages:
    2 349
    Likes Received:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    Ok, då funkar koden. Det är bra.

    En fundering jag har är över det contactId som du använder.
    Du tar ut en cursor från ContactsContract.CommonDataKinds.Phone.CONTENT_URI och plockar ut ett id från den.
    Sen använder du det för att göra en selection i ContactsContract.CommonDataKinds.Email.CONTENT_URI.

    Jag är inte särskilt väl bevandrad i ContentResolvers, men kan det vara olika id-begrepp?
    I exempelkod jag sett så används istället ett id från ContactsContract.Contacts.CONTENT_URI.

    Edit:
    När jag kollar på det lite mer så är det nog samma contactId överallt. Annars skulle det vara svårt att hålla ihop dem.
     
    Last edited: Mar 9, 2013
  5. 3D-kreativ

    3D-kreativ Infant Droid Medlem

    Joined:
    Feb 16, 2013
    Messages:
    9
    Likes Received:
    0

    MINA ENHETER

    Jag fattar inte varför det inte funkar! Går det att lösa på något annat sätt?