android - 如何从android中的联系人中删除电话号码?

标签 android contacts android-cursor

我想从 android 数据库中删除(例如手机号码)。为此,我按如下方式传递查询

public class ContactDemo extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String number = "2222";
        Long id = getID(number);
        int i = getContentResolver().delete(RawContacts.CONTENT_URI, RawContacts._ID+"=?", new String[]{id.toString()});
       System.out.println("Deleted"+i);
    }
    public Long getID(String number){       

        Uri uri =  Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
        Cursor c =  getContentResolver().query(uri, new String[]{PhoneLookup._ID}, null, null, null);
        while(c.moveToNext()){
            return c.getLong(c.getColumnIndex(PhoneLookup._ID));
        }
        return null;
    }    
}

但它正在删除整个联系人。

我应该使用什么来删除那个电话号码(而不是整个联系人)?

最佳答案

您使用 ContentResolver 的 delete 方法,因此您删除了整个联系人。要将此联系人的电话号码更新为空值,您需要使用 ContactsContact API。

http://developer.android.com/reference/android/provider/ContactsContract.Data.html

通过提供联系人原始 ID 和 Phone.CONTENT_ITEM_TYPE,您可以只请求属于此联系人的电话号码,然后将其全部删除。

 ArrayList<ContentProviderOperation> ops = Lists.newArrayList();
 ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI)
          .withSelection(Data._ID + "=? and " + Data.MIMETYPE + "=?", new String[]{String.valueOf(contactId), Phone.CONTENT_ITEM_TYPE})
          .build());
 getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

关于android - 如何从android中的联系人中删除电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792803/

相关文章:

android - 在 Android Studio 中使用共享库时出现 UnsatisfiedLinkError

android - 以编程方式保存照片联系人 - Android

java - close() Cursor 对象然后为其设置新值是否可以?

android - 从 JSONArray 到 SqLite 插入/更新 +10000 行时如何防止应用程序崩溃

android - 如何使用 DrawerLayout 在 ActionBar/Toolbar 上方和状态栏下方显示?

java - 无法将 ARGB 十六进制解析为整数

Android - 背景图像的最佳分辨率?

css - HTML5 中的移动网站在刷新之前不会拉取 CSS 文件

Android securityException 和用户联系人

android - 如何将 2 个游标表示为 1 个已排序的游标?