保存联系人后,onActivityResult()始终返回0

时间:2015-06-11 17:34:08

标签: android

有类似的问题,但我无法找到答案。在此先感谢您的帮助。

我正在尝试从新添加的联系人处获取数据信息。 以下是我的代码段:

public class MapActivity extends FragmentActivity {
...
        saveButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {                   
            Intent addContactIntent = new Intent(Intent.ACTION_INSERT);
            addContactIntent.setType(ContactsContract.Contacts.CONTENT_TYPE);
            addContactIntent.putExtra(ContactsContract.Intents.Insert.POSTAL , address);
            startActivityForResult(addContactIntent, ADD_NEW_CONTACT);
        }
    });

我致电联系人并将地址放在"地址"字段。

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ADD_NEW_CONTACT) {
        if(resultCode == RESULT_OK) {
            ...
        }
    }
}

但是,每当我保存联系人时,resultCode总是为0(注意联系人应用程序中没有"保存"按钮,我只需按下'后退'按钮即可保存它)。我知道它已被保存,因为我可以在联系人应用中看到已保存的联系人。 (当然,当我选择" Discard"时它会返回0。)

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。在我的例子中,解决方案是忽略Activity.RESULT_OK并关注我知道可用的两个值,即requestCode和Address(联系电话号码)。

然后在onActivityResult中,使用Contact.Address在Contacts API上创建一个查询,找到添加/编辑的联系人,并以这种方式提取我需要的任何数据。 (当然,如果OP删除了一个联系人,这将无效!)

在这个OP的情况下,POSTAL列在startActivityForResult之前是已知的,因此接下来查询应该基于该数据。

希望这有帮助!