blob: 22f6d8f680d66a2f9acf5c3b5a50983ed937918d [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.emergency;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
/**
* Utils to create and delete contacts.
*/
public class ContactTestUtils {
/** Deletes contacts that match the given name and phone number. */
public static boolean deleteContact(ContentResolver contentResolver,
String name,
String phone) {
Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(phone));
Cursor cursor = contentResolver.query(contactUri, null, null, null, null);
try {
if (cursor.moveToFirst()) {
do {
String displayName = cursor.getString(
cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
if (displayName.equals(name)) {
String lookupKey = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI,
lookupKey);
contentResolver.delete(uri, null, null);
return true;
}
} while (cursor.moveToNext());
}
return false;
} finally {
cursor.close();
}
}
/**
* Creates a new contact with the given name and phone number. Returns the
* ContactsContract.CommonDataKinds.Phone.CONTENT_URI corresponding to the new contact.
*/
public static Uri createContact(ContentResolver contentResolver,
String name,
String phoneNumber) {
ContentValues values = new ContentValues();
Uri rawContactUri = contentResolver.insert(ContactsContract.RawContacts.CONTENT_URI,
values);
long rawContactId = ContentUris.parseId(rawContactUri);
insertStructuredName(contentResolver, rawContactId, name, values);
return insertPhoneNumber(contentResolver, rawContactId,
phoneNumber,
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
}
private static void insertStructuredName(ContentResolver contentResolver,
long rawContactId,
String name,
ContentValues values) {
values.put(StructuredName.DISPLAY_NAME, name);
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
contentResolver.insert(ContactsContract.Data.CONTENT_URI, values);
}
private static Uri insertPhoneNumber(ContentResolver contentResolver,
long rawContactId,
String phoneNumber,
int type) {
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber);
values.put(ContactsContract.CommonDataKinds.Phone.TYPE, type);
values.put(ContactsContract.CommonDataKinds.Phone.LABEL, "Mobile");
return contentResolver.insert(ContactsContract.Data.CONTENT_URI, values);
}
private ContactTestUtils() {
// Prevent instantiation
throw new UnsupportedOperationException();
}
}