2012-05-30 21 views
3

与Android版本4.0.3发生此问题。我正在使用Android Contacts 2.0 API添加自定义RawContacts.ACCOUNT_TYPE的联系人。作为第二步我想用Intent.ACTION_EDIT编辑使用下面的代码的那些联系人:Android 4 startActivityForResult与Intent.ACTION_EDIT始终返回结果代码RESULT_CANCELED

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

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

谢谢。

回答

0

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

+0

我实际上花了很长时间并实施了一项自定义的编辑联系活动,它符合我的需求。它甚至会返回正确的结果代码。 – th0m4d

0

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

我不认为你的代码有问题,这很可能是问题在于你正在启动的应用程序中,它无法返回正确的结果。

+0

感谢您的答复。你有关于如何解决这个问题的建议吗? – th0m4d

+0

解决方案是将您的计算机从窗口中取出并作为废物收集器启动。 – Roel

0

添加以下解决了类似的问题,对我来说:

intent.putExtra("finishActivityOnSaveCompleted", true); 
相关问题