各位牛人,我最近在对Android contacts通信地址进行更新操作时碰到了一个头疼的问题,麻烦各位牛人指点一二。具体操作是这样的:
在contacts里新增一条记录,在这条记录里填写住宅地址,保存退出。再长按这个联系人选“编辑联系人”,进入编辑界面,修改通信地址,保存退出。 问题来了,这时如果你再通过“编辑联系人”进入编辑界面,看到的是修改后的最新通信地址。 但是如果直拉点击进入查看这个联系人,看到的联系人的通信地址还是没有修改之前的。 查看联系人时的uri=content://com.android.contacts/contacts/lookup/0r2-5D5D/2。编辑联系人时的Uri=content://com.android.contacts/raw_contacts/2
现在上层的区别就是这个样子,通过sqlite3查看contacts数据库里的data表时,发现里面既存了新的通信地址,也存了旧的通信地址。  现在不知道查看时怎么就取到的是旧地址,编辑时查看到的是新地址。 我现在想在查看时也要查看到新地址,还烦请各位牛人指点哇。

解决方案 »

  1.   

    联系人这块,与手机系统有关,也有SDK的版本有关,出现这样的问题,先确定手机的系统版本,然后看看其他手机系统是否也是这样。
      

  2.   


    我用的是高通平台的Android2.3版本。
      

  3.   


    如果你一步一步的验证下来,便会发现删除旧的是不可取的。旧的和新的数据都存在data表中,都有自己的用途。现在问题应该在于,直接点击进入时查看时的条件可能设错了,但是我不知道应该怎么样去设置这个条件。在查询时,是用的下面这段代码来查询的:
                final Uri uri = getSelectedUri(position);
                if ((mMode & MODE_MASK_PICKER) == 0) {
                    final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                    StickyTabs.setTab(intent, getIntent());
                    startActivityForResult(intent, SUBACTIVITY_VIEW_CONTACT);
                }
    其中这个getSelectedUri(position)跟进去会发现设置的查询语句为:
    final Cursor cursor = (Cursor)mAdapter.getItem(position);
    final long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX);
    final String lookupKey = cursor.getString(SUMMARY_LOOKUP_KEY_COLUMN_INDEX);
    return Contacts.getLookupUri(contactId, lookupKey);
    这里返回的URI可能有问题。但具体应该是怎么样的,还得请牛人指点。
      

  4.   

    或者哪位大哥有没有android contacts数据库的详细资料,跪求一份