2011-12-21 12 views
15

Androidの標準の連絡先インターフェイスを使用して、新しい連絡先を作成するようにアプリケーションに要求します。次に、新しく作成した連絡先から情報を読み取ることができるようにしたい。連絡先のインテントを追加しても、ICSの下でonActivityResultのデータが返されない

私のコードは、thisサイトの「Adding A New Contact」に基づいています。

Intent intent = new Intent(Intent.ACTION_INSERT); 
intent.setType(Contacts.CONTENT_TYPE); 
intent.putExtra(ContactsContract.Intents.Insert.PHONE, number); 
startActivityForResult(intent, PICK_CONTACT); 

、その後

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Intent intent = new Intent(this, Foo.class); 
    Uri uri = data.getData(); //I get nullpointer here on ICS 
    intent.putExtra("contact", ContactAccessor.getInstance().loadContact(this, uri)); 
    startActivity(intent); 
    finish(); 
} 

このコードは、Android 2.2と2.3に細かい動作します。連絡先アプリケーションを起動し、ユーザーに名前や電子メールアドレスなどの情報を入力させ、完了したら「OK」または「保存」または「何でも」をアプリに返し、入力したものを読むことができます。 Android 4.0(ICS)では、連絡先の作成が完了しても、アプリには戻ってこない。私がコンタクトビューを終了するとき(戻るボタンを通して)、コンタクト情報の意図は含まれません。

ICSで同じ動作をするには、どのような意図を使用しますか?

+0

私は同じ問題を抱えている:( –

+0

http://stackoverflow.com/questions/9551821/android-4-0-3-and-finish-activity 私は同様の問題を抱えています。 – user1247617

+0

私問題は、別のアクティビティを開いてonActivityResult()の親アクティビティに戻ったときに動作しますが、カメライベントをキャプチャまたはキャンセルする前に呼び出されたintent onActivityResult()を使用してイメージをキャプチャしようとすると、この問題はアンドロイド4.03 htc me) –

答えて

15
のAndroid 4.0.3用

とアップは、新しい意図余分に提供する必要があります。

のpublic static final文字列INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = "finishActivityOnSaveCompletedを"。

intent.putExtra(INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED、true);

Android 4.0〜4.0.2の解決策はありません。

誰でも?

+1

これは素晴らしいです!ありがとうございます。私はギャラクシーネクサス4.0.4でこれを試しましたが、それは魅力的でした!愚かなVerizon Galaxy Nexusはまだ4.0.2で立ち往生しています。しかし、うまくいけば、Verizonはすぐにそれを更新するでしょう。もう一度ありがとう! –

+1

私は多くの頭痛を保存しました、ありがとう!これは明らかになっていますが、Androidのドキュメントをどこで調べるかは、もちろん頭痛です。 「ナビゲーションフラグを追加する」のhttp://developer.android.com/training/contacts-provider/modify-data.html – Groxx

+0

これはAndroid 4.4.2では動作しません。何か解決策がある場合や変更されたことが分かっている場合は、お知らせください。 Thx – Sandra

関連する問題