アプリで新しい連絡先のショートカットを作成するか、既存の連絡先を編集するかを指定するために、2 つのエクストラを使用する連絡先の選択方法があります。
問題は、私が何をしても、エクストラが常に null のように見え、それらにアクセスしようとすると nullPointerException が発生することです。
インテント タイプを に設定するとContactsContract.Contacts.CONTENT_TYPE
、ユーザー定義のエクストラがリセットされるのではないかと思いますが、よくわかりません。
現時点で私がやっていることは次のとおりです。
連絡先ピッキングの意図
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)
た(2つのワークフローの違いをよく理解していません)が、残念ながら同じ問題に直面しました.
どんな助けでも大歓迎です。