Mein Ziel ist es, die Telefonnummer und die E-Mail eines Kontakts zu erhalten. Ich habe versucht, einen Cursor zu verwenden, aber irgendwie gibt es das gleiche für Telefon und E-Mail zurück (beide, abhängig von einigen Dingen). Was ich gerade möchte, ist eine Hashtabelle, die E-Mails an Telefonnummern oder zwei Hashtables, emailToID und IDToPhone abbildet. Dies ist, was ich bis jetzt habe, aber die IDs, die ich verwende, sind nicht dieselben über Parameter (das Telefon von [email protected] ist 123, ihre jeweiligen IDs sind nicht die gleichen und können nicht leicht zugeordnet werden). Wäre dankbar für Hilfe!Android: Wie bekomme ich eine Nummer von Kontakte per E-Mail?
public String getPhoneByEmail(String userEmail){
final String EMAIL_URI = ContactsContract.CommonDataKinds.Email.DATA;
final String PHONE_URI = ContactsContract.CommonDataKinds.Phone.NUMBER;
Hashtable<String, Integer> emailToId = new Hashtable<>();
Hashtable<Integer, String> idToPhone = new Hashtable<>();
ContentResolver cr = getContext().getContentResolver();
Cursor cur1 = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
null,
null, null);
Cursor cur2 = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
null,
null, null);
while (cur1.moveToNext()) {
String phone = cur1.getString(cur1.getColumnIndex(PHONE_URI));
String id1 = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
idToPhone.put(Integer.parseInt(id1), phone);
}
while (cur2.moveToNext()) {
String email = cur2.getString(cur2.getColumnIndex(EMAIL_URI));
String id2 = cur2.getString(cur2.getColumnIndex(ContactsContract.CommonDataKinds.Email._ID));
emailToId.put(email, Integer.parseInt(id2));
}
cur1.close();
cur2.close();
if (emailToId.get(userEmail)!=null){
int id = emailToId.get(userEmail);
int newId = id - 2;
String phone = idToPhone.get(newId);
return phone;
}
else return "not found";
}