【问题标题】:Deleting a specific RawContact content directory entry删除特定 RawContact 内容目录条目
【发布时间】:2012-12-08 07:18:31
【问题描述】:

我是 android dev 的新手,所以我可能会完全错误地理解整个概念。我想从 RawContact 目录条目中删除特定条目。这是我的代码:

Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
         Uri entityUri = Uri.withAppendedPath(rawContactUri, Entity.CONTENT_DIRECTORY);
         Cursor c = getContentResolver().query(entityUri,
                  new String[]{RawContacts._ID, Entity.DATA_ID, Entity.MIMETYPE,CommonDataKinds.GroupMembership.GROUP_SOURCE_ID},
                  null, null, null);

使用光标 c 我得到适当的 Entity.DATA_ID。之后我尝试删除一个条目:

 getContentResolver().delete(entityUri,Entity.DATA_ID+"=?",
                  new String[]{id});

并得到一个错误:

java.lang.UnsupportedOperationException: URI: content://com.android.contacts/raw_contacts/2709/entity

我做错了什么?

UPD 1 我正在尝试删除组成员身份条目。

【问题讨论】:

    标签: android android-contacts rawcontacts


    【解决方案1】:

    请更完整地解释您要执行的操作。您说要“从 RawContact 目录条目中删除特定条目。”,这是令人困惑的吗?你要不要

    a) 删除原始联系人? b) 删除一组原始联系人? c) 删除单个原始联系人的所有数据行? d) 删除一组原始联系人的所有数据行?

    或者你想对组成员做些什么?

    无论如何,我认为您已经反向构建了 URI。尝试在 rawContactId 之前附加 Entity.CONTENT_DIRECTORY。我知道文档没有这么说,但是文档写得不好。

    更好的选择是使用 ContactsContract.RawContactEntity 表。

    【讨论】:

    • 乔,谢谢。我想删除 groupmembership 条目,这是正确的。正确的方法是什么?谢谢你的建议——我会试试的。顺便说一句 - 你是什么意思倒退 - 什么是正确的?我正在从文档中复制粘贴样本。它应该看起来像:raw_contacts/entity/2709?
    • BTW developer.android.com/reference/android/provider/… 说:这是一个严格的只读表。是否可以从中删除?
    • 不幸的是,反转不起作用:java.lang.IllegalArgumentException: URI: content://com.android.contacts/raw_contacts/entity/2709
    【解决方案2】:

    看来我使用了错误的 URI。我也切换到了修改表格的“新”方式:

     ArrayList<ContentProviderOperation> ops =
                          new ArrayList<ContentProviderOperation>();
    
                 ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI)
                          .withSelection(Data._ID + "=?", new String[]{i})
                          .build());
                 getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多