2 lidaming and LiDaming_and 于 2012.12.29 11:09 提问

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

我想从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;
    }    
}

这个方法把所有的联系人的电话号码全删除了。
我想实现的是删除某一个人的联系方式,不是所有人的联系方式?如何实现呢?

2个回答

yongyong_21
yongyong_21   2013.01.08 11:23
已采纳

你使用ContentResolver方法,就会删除所有的联系人。应该使用 ContactsContact API.
参考:http://developer.android.com/reference/android/provider/ContactsContract.Data.html

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);
baimy1985
baimy1985   2012.12.29 19:04

你的代码是根据 rawContact_id 去删除记录,按你表述的意思,感觉你是想一个联系人的某个电话号码同时还保留同联系人的其它号码,如果是这样你是不是应该根据contact_id去删除。不知道我理解对了没有。

LiDaming_and
LiDaming_and 谢谢你的回答,估计是我没把问题说明清楚我。现在把问题编辑了。我是想 删除某一个人的联系方式,不是所有人的联系方式
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!