2012-05-30 33 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); 
相關問題