Muszę obsługiwać system Android w wersji 2.1 lub nowszej.Jak dodać dane strukturalne do nowego kontaktu Intent
Google zamieścił przykład, jak korzystać z Kontakty Kontakty, ale niektóre z nich używały rzeczy, które są dostępne od poziomu 11 interfejsu API, więc muszę improwizować, ale utknąłem.
Więc pory mam to:
String firstName = contactProperties.get("firstName");
String lastName = contactProperties.get("lastName");
String phone = contactProperties.get("phone");
String email = contactProperties.get("email");
String company = contactProperties.get("company");
String postal = contactProperties.get("street") + ", " + contactProperties.get("city") + ", " + contactProperties.get("state") + " " + contactProperties.get("zip") + " " + contactProperties.get("country");
// Creates a new intent for sending to the device's contacts application
Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
// Sets the MIME type to the one expected by the insertion activity
insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, firstName + " " + lastName);
insertIntent.putExtra(ContactsContract.Intents.Insert.EMAIL, email);
insertIntent.putExtra(ContactsContract.Intents.Insert.PHONE, phone);
insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
insertIntent.putExtra(ContactsContract.Intents.Insert.POSTAL, postal);
// Send out the intent to start the device's contacts app in its add contact activity.
startActivity(insertIntent);
Uwaga jak ja strukturyzowane NAME
i POSTAL
dodatki. Nie działa to na wszystkich urządzeniach, ponieważ niektóre książki adresowe mają oddzielone pola pierwszego i ostatniego nazwiska, a także pola miasta, stanu i zip. Moje "rozwiązanie" wygląda więc dość głupio: w polu imienia znajdują się zarówno imię, jak i nazwisko, a pole adresu ma pełny adres. Jak mogę to naprawić? Czy ktoś da mi przykład?
Dla przypomnienia, to nie działa:
insertIntent.putExtra(ContactsContract.CommonDataKinds.StructuredPostal.STREET, contactProperties.get("street"));
insertIntent.putExtra(ContactsContract.CommonDataKinds.StructuredPostal.CITY, contactProperties.get("city"));
Należy również pamiętać, że nie chcę, aby dodać pozwolenie na mój manifest, aby umożliwić pisanie do kontaktów. To jest cały sens używania intencji.
Czy masz oddzielny kod dla wstawianie w Kontaktach dla API 11 i wyższych oraz API poziomu 11 i poniżej? –