4

我正在尝试从联系人列表中选择一个电话号码。一切正常,但我正在存储电话号码。我想存储一个指向电话号码的指针,以便在更改时获得新号码。

我想我应该只存储我在 onActivityResult 中返回的 Uri,但我不确定它到底指向什么。

文档说 startActivityForResult() * “返回所选行的内容 URI。URI 的形式是表的内容 URI,并附加了行的 LOOKUP_ID。”*

谁能给我指一个文档,或者解释一下这个 Uri 是什么?除了存储此 uri 然后再次进行查询之外,存储指向电话号码的指针是否有更好的方法?

顺便说一句,我可能只存储两者并在联系人数据库上实现一个侦听器,并且仅在数据库已更新时才重新查询。

我使用联系人选择器来选择联系人;

Intent pickContactIntent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);

然后在选择它之后,我使用这样的方式获得电话号码:

public void onActivityResult(int requestCode, int resultCode, Intent data) {            
    if (requestCode == PICK_CONTACT_REQUEST) {
        if (resultCode == android.app.Activity.RESULT_OK) {
            Uri contactUri = data.getData();
            Cursor cursor = contentResolver.query(contactUri,null, null, null, null);
            if (cursor != null && cursor.moveToFirst()) {
                int columnPhone = cursor.getColumnIndex(Phone.NUMBER);
                String number = cursor.getString(columnPhone);
            }
        }   
    }
}
4

0 回答 0