У меня есть метод выбора контактов, который использует два дополнительных параметра, чтобы указать, создаете ли вы новый ярлык контактов в моем приложении или редактируете существующий.Android Contact Picker Intent всегда возвращает пустое дополнение
Проблема в том, что независимо от того, что я делаю, дополнительные функции всегда кажутся нулевыми, что вызывает исключение nullPointerException при попытке получить к ним доступ.
Я подозреваю, что установка типа намерения на ContactsContract.Contacts.CONTENT_TYPE
сбрасывает любые пользовательские дополнительные функции, но я не уверен.
Вот что я делаю в данный момент:
Контакты Picking Намерение
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
Bundle extras = new Bundle();
extras.putBoolean("isEditing", isEditing);
extras.putLong("shortcut", shortcut.getId());
intent.putExtras(extras);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
И в onActivityResult()
switch (requestCode) {
case (PICK_CONTACT_REQUEST):
if (resultCode == getActivity().RESULT_OK) {
Uri contactData = data.getData();
Bundle bundle = data.getExtras();
Boolean isEditing = false;
long shortcutId = 0;
if (bundle != null) {
Toast.makeText(getActivity(), "Bundle Not Null", Toast.LENGTH_SHORT).show();
if (bundle.containsKey("isEditing")) {
isEditing = bundle.getBoolean("isEditing", false);
Toast.makeText(getActivity(), "" + isEditing, Toast.LENGTH_SHORT).show();
}
if (bundle.containsKey("shortcutId")) {
shortcutId = bundle.getLong("shortcutId", 0);
Toast.makeText(getActivity(), "" + shortcutId, Toast.LENGTH_SHORT).show();
}
}
Тосты никогда не показаны, так как Я не думаю, что пакет не найден. Я тоже пробовал другой рабочий процесс, используя Intent.putExtraString("isEditing", value)
, а затем получая их с intent.getStringExtra("isEditing", false)
, пропуская упаковку дополнительных компонентов в комплекте (не совсем понял разницу между двумя рабочими процессами), но, увы, я столкнулся с той же проблемой.
Любая помощь была бы принята с благодарностью.