我想從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方法,就會刪除所有的聯系人。應該使用 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);