【问题标题】:how can i get proper Uri of a particular contact in android 2.1如何在 android 2.1 中获取特定联系人的正确 Uri
【发布时间】:2010-03-18 07:11:10
【问题描述】:

我已经编写了一个应用程序并在模拟器上添加了 2 个联系人,但我 我无法在 android 2.1 上更新他们的名字,代码正在处理中 android 1.6平台,代码如下。

ContentValues contactValues = new ContentValues();
contactValues.put(Contacts.People.NAME, firstName+" "+lastName);
getContentResolver().update(UpdateContactUri, contactValues, null,
null);

在 android 1.6 中,我得到这两个联系人的 Uri 是“content:// 联系人/人/1”和“内容://联系人/人/2”。

但在 2.1 中,我得到的这些值是“content://contacts/people/8” 和“content://contacts/people/9”,同时更新其捐赠 “java.IllegalArgumentException,空值”异常。

当我尝试放置像“content://contacts/people/1”这样的静态 Uri 时, 代码已成功调试,但未更新联系人。

我该如何解决它,为什么我没有像 1.6 平台那样获得 uri?

提前谢谢...

【问题讨论】:

    标签: android android-emulator


    【解决方案1】:

    在 android 2.1 中,我使用这个 hack 代码来更新联系人姓名:

    public static void modifyPeopleName(ContentResolver cr, String id,
            String sName) {
        if (sName == null)
            return;
    
        ContentValues values = new ContentValues();
        int android_sdk_version = Integer.parseInt(Build.VERSION.SDK);
        if (android_sdk_version < 7) {
            values.put(People.NAME, sName);
            cr.update(People.CONTENT_URI, values, People._ID+"="+id, null);
        } else {
            values.put("data1", sName);
            cr.update(Uri.parse("content://com.android.contacts/data/"),
                    values, "raw_contact_id=" + id, null);
        }
        return;
    }
    

    【讨论】:

      【解决方案2】:

      2.1 SDK 包含名为 ContactsContract 的联系人的新 contentHandler 查询现在移动到看起来不同,所以我确定 URI 也不同。 我们在 2.1 中只能编辑和获取联系人的字段。 见http://developer.android.com/reference/android/provider/ContactsContract.html

      【讨论】:

      • 您好,感谢您的回复,现在我可以获得不同的 uri,例如 content://com.android.contacts/contacts/16 但无法通过 contactValues.putContactsContract.Contacts 更新其名称.DISPLAY_NAME, firstName+" "+lastName); getContentResolver().update(content://com.android.contacts/contacts/16, contactValues, null, null);我得到 0,因为没有更新行。这里有什么问题吗?
      【解决方案3】:

      您可以使用以下代码在模拟器中添加联系人。 导入 android.provider.Contacts.People;

      public void addvaluestocontent()
      {
         ContentValues values = new ContentValues();
         values.put(People.NAME, "Abraham Lincoln");
         values.put(People._ID, "1");
         values.put(People.NUMBER, "23333");
         Uri uri = getContentResolver().insert(People.CONTENT_URI, values);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 2015-11-02
        • 1970-01-01
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        相关资源
        最近更新 更多