1

次のコードを使用して連絡先を追加します。

        Intent intent = new Intent(Intent.ACTION_INSERT,  ContactsContract.Contacts.CONTENT_URI);

        activity.startActivityForResult(intent, ATTACH_VCARD_REQUEST_CODE);

しかし、私のGoogle Nexusでは、デフォルトのAndroidContactManagerアプリケーションが結果をアクティビティに返しません。

次の動作があります。1。連絡先マネージャーに電話します。2。フィールド名を追加し、[完了]をクリックします。

その後、デフォルトのAndroid Contact Managerの他のアクティビティが開きます。このアクティビティを終了できるのは、戻るボタンまたは上ボタンを押した場合のみです。その後、バックスタック(戻るボタン)を使用してアプリケーションアクティビティに戻ることができません。最近のタスクマネージャーでアプリケーションを開くことはできますが、resulCode==0およびintent==nullになります。

4

1 に答える 1

0

標準の連絡先アプリケーションのソースコードを確認したところ、新しい連絡先の作成を担当するアクティビティが見つかりました。フラグINTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED="finishActivityOnSaveCompleted";があります。このフラグがtrueの場合、setResult(RESULT_OK);と呼ばれます。

したがって、この問題の解決策は

    Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
    intent.putExtra("finishActivityOnSaveCompleted", true);
    activity.startActivityForResult(intent, ATTACH_VCARD_REQUEST_CODE);
于 2013-03-28T06:10:43.263 に答える