带有Intent.ACTION_EDIT的Android 4 startActivityForResult始终返回结果码RESULT_CANCELED

时间:2012-05-30 20:08:53

标签: android android-intent contacts android-4.0-ice-cream-sandwich

Android 4.0.3版会出现此问题。我正在使用Android Contacts 2.0 API向自定义RawContacts.ACCOUNT_TYPE添加联系人。作为第二步,我想使用Intent.ACTION_EDIT使用以下代码编辑这些联系人:

Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setData(contactUri);
startActivityForResult(intent, EDIT_CONTACT_RESULT);

Intent正在打开android内置编辑联系人活动。但是,当我按完成后,它会将我转发到当前编辑的联系人的联系人视图活动。如果我按下后退按钮,我会转发回我的应用程序。问题是onActivityResult();始终返回RESULT_CANCELED作为结果代码。任何想法如何解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:0)

不幸的是,许多制造商都在调整他们的SDK,并且许多应用程序无法正确实现这一点,请将其称为"Android Pattern",您应该返回正确的RESTULT_CODE。我在FacebookTwitter等应用程序中也遇到了很多类似的行为,如果用户共享/取消了操作,它们甚至无法返回正确的结果代码。

我不认为您的代码存在问题,很可能是问题出在您正在启动的应用程序中,但是无法返回正确的结果。

答案 1 :(得分:0)

甚至在“股票Android”(JB,Galaxy Nexus)上也会发生这种情况。似乎唯一的方法是忽略结果代码并重新读取联系人而不管它(请注意Intent数据也将为null,因此您必须打开编辑活动时使用的联系人Uri )。

答案 2 :(得分:0)

添加以下内容为我解决了类似的问题:

intent.putExtra("finishActivityOnSaveCompleted", true);