Я возиться со следующим кодом, чтобы он работал на всех устройствах.К счастью, он отлично работает на LG Nexus 5 (Android 6.0.1)
Тот же фрагмент кода, который я пробую на Sony Xperia D6503 (Android 6.0.1).Но это не работает.
private void addContactUsingIntent() {
Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
intent.putExtra(INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);
//ContactsListActivity.this.startActivityForResult(intent, INSERT_CONTACT_REQUEST);
startActivityForResult(intent, INSERT_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == INSERT_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
Uri contactData = data.getData();
Cursor cursor = getContentResolver().query(contactData, null, null, null, null);
if (cursor.moveToFirst()) {
long newId = cursor.getLong(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
String email = getEmail(String.valueOf(newId));
ArrayList<String> phones = new ArrayList<>();
Cursor cPhones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{String.valueOf(newId)}, null);
while (cPhones.moveToNext()) {
phones.add(cPhones.getString(cPhones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
cursor.close();
cPhones.close();
Uri photoUri = getPhotoUri(newId);
Log.i("Photo URI", photoUri.toString());
updateViews(newId, name, phones, email, photoUri);
}
}
}
}
Пожалуйста, посмотрите на приведенный выше код и дайте мне знать, если я делаю что-то не так.
На устройстве LG Nexus 5, когда мое приложение вызывает addContactUsingIntent
, открывается приложение Contact устройства по умолчанию.Как только пользователи сохраняют контакт, я получаю data
в onActivityResult
.На устройстве Sony Xperia также открывается экран контактов по умолчанию для добавления контакта, но после того, как пользователи сохранят его, он отображает только что добавленный контакт, а затем пользователь должен вручную нажать обратно, чтобы вернуться в мое приложение.При этом, когда onActivityResult" is called, it comes back with data as null and
resultCode as
-1`, что явно не так.
Я также попробовал следующее решение, но оно не работает на этом устройстве. Добавление контактного намерения не возвращает данные обActivityResult под ICS
Будем весьма благодарны за любые предложения, чтобы заставить его работать.
Спасибо
PS .Я также протестировал этот код на Oppo F3 Plus (Android 6.0.1), и он отлично работает.