private boolean fillContactDataFromNameAndEmail(String query, List<Recipient> recipients, Map<String, Recipient> recipientMap) { query = "%" + query + "%"; Uri queryUri = Email.CONTENT_URI; String selection = Contacts.DISPLAY_NAME_PRIMARY + " LIKE ? " + " OR (" + Email.ADDRESS + " LIKE ? AND " + Data.MIMETYPE + " = '" + Email.CONTENT_ITEM_TYPE + "')"; String[] selectionArgs = { query, query }; Cursor cursor = contentResolver.query(queryUri, PROJECTION, selection, selectionArgs, SORT_ORDER); if (cursor == null) { return false; } fillContactDataFromCursor(cursor, recipients, recipientMap); return true; }
private static void addContactToGroup(ContentResolver mResolver, int contactId, int groupId) { // judge whether the contact has been in the group boolean b1 = ifExistContactInGroup(mResolver, contactId, groupId); if (b1) { // the contact has been in the group return; } else { ContentValues values = new ContentValues(); values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID, contactId); values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, groupId); values.put(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE, ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE); mResolver.insert(ContactsContract.Data.CONTENT_URI, values); } }
private static boolean ifExistContactInGroup(ContentResolver mResolver, int contactId, int groupId) { String where = Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "' AND " + Data.DATA1 + " = '" + groupId + "' AND " + Data.RAW_CONTACT_ID + " = '" + contactId + "'"; Cursor markCursor = mResolver.query(ContactsContract.Data.CONTENT_URI, new String[] {ContactsContract.Data.DISPLAY_NAME}, where, null, null); if (markCursor.moveToFirst()) { return true; } else { return false; } }
private void fillContactDataFromQuery(String query, List<Recipient> recipients, Map<String, Recipient> recipientMap) { ContentResolver contentResolver = getContext().getContentResolver(); query = "%" + query + "%"; Uri queryUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI; String selection = Contacts.DISPLAY_NAME_PRIMARY + " LIKE ? " + " OR (" + Email.ADDRESS + " LIKE ? AND " + Data.MIMETYPE + " = '" + Email.CONTENT_ITEM_TYPE + "')"; String[] selectionArgs = { query, query }; Cursor cursor = contentResolver.query(queryUri, PROJECTION, selection, selectionArgs, SORT_ORDER); if (cursor == null) { return; } fillContactDataFromCursor(cursor, recipients, recipientMap); if (observerContact != null) { observerContact = new ForceLoadContentObserver(); contentResolver.registerContentObserver(queryUri, false, observerContact); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_runset_screenslide_pager); setTitle("跑步设定"); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item1, Data); ListView listView = (ListView) findViewById(R.id.runset_listview); listView.setAdapter(arrayAdapter); listView.setOnItemClickListener(this); // Instantiate a ViewPager and a PagerAdapter. mRunSetAdapter = new RunSetPagerAdapter(this); mPager = (ViewPager) findViewById(R.id.runset_pager); // mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); mPager.setAdapter(mRunSetAdapter); mBeginRunButton = (Button) findViewById(R.id.begin_run); mBeginRunButton.setOnClickListener(this); }
/** * 删除单个数据,会直接删除是这个名字的人的所有信息 * * @param name 用户的姓名 * @return 是否删除成功 */ public boolean delete(String name) { try { //根据姓名求id Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); //查询到name=“name”的集合 Cursor cursor = mResolver.query(uri, new String[]{Data._ID}, "display_name=?", new String[]{name}, null); if (cursor.moveToFirst()) { int id = cursor.getInt(0); //根据id删除data中的相应数据 mResolver.delete(uri, "display_name=?", new String[]{name}); uri = Uri.parse("content://com.android.contacts/data"); mResolver.delete(uri, "raw_contact_id=?", new String[]{id + ""}); return true; } } catch (Exception e) { e.printStackTrace(); } return false; }
/** * 修改联系人数据 */ public boolean update(String name, String phoneNumber) { try { //根据姓名求id,再根据id删除 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); Cursor cursor = mResolver.query(uri, new String[]{Data._ID}, "display_name=?", new String[]{name}, null); if (cursor.moveToFirst()) { int id = cursor.getInt(0); Uri mUri = Uri.parse("content://com.android.contacts/data");//对data表的所有数据操作 ContentValues values = new ContentValues(); values.put("data1", phoneNumber); mResolver.update(mUri, values, "mimetype=? and raw_contact_id=?", new String[]{"vnd.android.cursor.item/phone_v2", id + ""}); return true; } } catch (Exception e) { e.printStackTrace(); } return false; }
/** * 删除单个数据,会直接删除是这个名字的人的所有信息 * * @param name 用户的姓名 * @return 是否删除成功 */ public boolean delete(String name) { try { //根据姓名求id Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = mContext.getContentResolver(); //查询到name=“name”的集合 Cursor cursor = resolver.query(uri, new String[]{Data._ID}, "display_name=?", new String[]{name}, null); if (cursor.moveToFirst()) { int id = cursor.getInt(0); //根据id删除data中的相应数据 resolver.delete(uri, "display_name=?", new String[]{name}); uri = Uri.parse("content://com.android.contacts/data"); resolver.delete(uri, "raw_contact_id=?", new String[]{id + ""}); return true; } } catch (Exception e) { e.printStackTrace(); } return false; }
/** * 修改联系人数据 */ public boolean update(String name, String phoneNumber) { try { //根据姓名求id,再根据id删除 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = mContext.getContentResolver(); Cursor cursor = resolver.query(uri, new String[]{Data._ID}, "display_name=?", new String[]{name}, null); if (cursor.moveToFirst()) { int id = cursor.getInt(0); Uri mUri = Uri.parse("content://com.android.contacts/data");//对data表的所有数据操作 ContentResolver mResolver = mContext.getContentResolver(); ContentValues values = new ContentValues(); values.put("data1", phoneNumber); mResolver.update(mUri, values, "mimetype=? and raw_contact_id=?", new String[]{"vnd.android.cursor.item/phone_v2", id + ""}); return true; } } catch (Exception e) { e.printStackTrace(); } return false; }
private Cursor getNicknameCursor(String nickname) { nickname = "%" + nickname + "%"; Uri queryUriForNickname = ContactsContract.Data.CONTENT_URI; return contentResolver.query(queryUriForNickname, PROJECTION_NICKNAME, ContactsContract.CommonDataKinds.Nickname.NAME + " LIKE ? AND " + Data.MIMETYPE + " = ?", new String[] { nickname, ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE }, null); }
@SuppressWarnings("ConstantConditions") private boolean fillContactDataFromNickname(String nickname, List<Recipient> recipients, Map<String, Recipient> recipientMap) { boolean hasContact = false; Uri queryUri = Email.CONTENT_URI; Cursor nicknameCursor = getNicknameCursor(nickname); if (nicknameCursor == null) { return hasContact; } try { while (nicknameCursor.moveToNext()) { String id = nicknameCursor.getString(INDEX_CONTACT_ID_FOR_NICKNAME); String selection = ContactsContract.Data.CONTACT_ID + " = ?"; Cursor cursor = contentResolver .query(queryUri, PROJECTION, selection, new String[] { id }, SORT_ORDER); String contactNickname = nicknameCursor.getString(INDEX_NICKNAME); fillContactDataFromCursor(cursor, recipients, recipientMap, contactNickname); hasContact = true; } } finally { nicknameCursor.close(); } return hasContact; }
public static void AddContact(ContentResolver mResolver, String name, String number, String groupName) { Log.i("hoperun", "name= " + name + ";number=" + number); if (!queryFromContact(mResolver, name, number)) { ContentValues values = new ContentValues(); // 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId Uri rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, values); if (rawContactUri != null) { long rawContactId = ContentUris.parseId(rawContactUri); // 往data表插入姓名数据 values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);// 内容类型 values.put(StructuredName.GIVEN_NAME, name); mResolver.insert(ContactsContract.Data.CONTENT_URI, values); // 往data表插入电话数据 values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); values.put(Phone.NUMBER, number); values.put(Phone.TYPE, Phone.TYPE_MOBILE); mResolver.insert(ContactsContract.Data.CONTENT_URI, values); } else { Log.i("hoperun", "name= " + name + ";number=" + number); } } else { Log.i("hoperun", "repeat name= " + name + ";number=" + number); } }
/** * 往手机通讯录插入联系人 * * @param ct * @param name * @param tel * @param email */ public static void insertContact(Context ct, String name, String tel, String email) { ContentValues values = new ContentValues(); // 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId Uri rawContactUri = ct.getContentResolver().insert(RawContacts.CONTENT_URI, values); long rawContactId = ContentUris.parseId(rawContactUri); // 往data表入姓名数据 if (!TextUtils.isEmpty(tel)) { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);// 内容类型 values.put(StructuredName.GIVEN_NAME, name); ct.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); } // 往data表入电话数据 if (!TextUtils.isEmpty(tel)) { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);// 内容类型 values.put(Phone.NUMBER, tel); values.put(Phone.TYPE, Phone.TYPE_MOBILE); ct.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); } // 往data表入Email数据 if (!TextUtils.isEmpty(email)) { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);// 内容类型 values.put(Email.DATA, email); values.put(Email.TYPE, Email.TYPE_WORK); ct.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); } }
@Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { String[] columns = {Phone._ID, Phone.DISPLAY_NAME_PRIMARY, Phone.DATA}; String selection = Data.MIMETYPE + " = '" + Phone.CONTENT_ITEM_TYPE + "'"; String orderBy = Phone.DISPLAY_NAME_PRIMARY + " ASC"; return new CursorLoader(this, Phone.CONTENT_URI, columns, selection, null, orderBy); }
/** * 添加一个联系人数据 * * @return 返回true表示添加成功,false表示失败 */ public boolean insert(String name, String phoneNumber) { //根据号码找数据,如果存在则不添加 if (getNameByPhoneNumber(phoneNumber) == null) { //插入raw_contacts表,并获取_id属性 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = mContext.getContentResolver(); ContentValues values = new ContentValues(); long contact_id = ContentUris.parseId(resolver.insert(uri, values)); //插入data表 uri = Uri.parse("content://com.android.contacts/data"); //添加姓名 values.put("raw_contact_id", contact_id); values.put(Data.MIMETYPE, "vnd.android.cursor.item/name"); values.put("data2", name); resolver.insert(uri, values); values.clear(); //添加手机号码 values.put("raw_contact_id", contact_id); values.put(Data.MIMETYPE, "vnd.android.cursor.item/phone_v2"); values.put("data2", "2"); //2表示手机 values.put("data1", phoneNumber); resolver.insert(uri, values); values.clear(); return true; } else { return false; } }
/** * 删除单个数据,会直接删除是这个名字的人的所有信息 * * @param name 用户的姓名 * @return 是否删除成功 */ public boolean delete(String name) { Cursor cursor = null; try { //根据姓名求id Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = mContext.getContentResolver(); //查询到name=“name”的集合 cursor = resolver.query(uri, new String[]{Data._ID}, "display_name=?", new String[]{name}, null); if (cursor != null) { if (cursor.moveToFirst()) { int id = cursor.getInt(0); //根据id删除data中的相应数据 resolver.delete(uri, "display_name=?", new String[]{name}); uri = Uri.parse("content://com.android.contacts/data"); resolver.delete(uri, "raw_contact_id=?", new String[]{id + ""}); return true; } } } catch (Exception e) { e.printStackTrace(); }finally { if (cursor != null) { cursor.close(); } } return false; }
/** * 修改联系人数据 */ public boolean update(String name, String phoneNumber) { Cursor cursor = null; try { //根据姓名求id,再根据id删除 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = mContext.getContentResolver(); cursor = resolver.query(uri, new String[]{Data._ID}, "display_name=?", new String[]{name}, null); if (cursor != null) { if (cursor.moveToFirst()) { int id = cursor.getInt(0); Uri mUri = Uri.parse("content://com.android.contacts/data");//对data表的所有数据操作 ContentResolver mResolver = mContext.getContentResolver(); ContentValues values = new ContentValues(); values.put("data1", phoneNumber); mResolver.update(mUri, values, "mimetype=? and raw_contact_id=?", new String[]{"vnd.android.cursor.item/phone_v2", id + ""}); return true; } } } catch (Exception e) { e.printStackTrace(); }finally { if (cursor != null) { cursor.close(); } } return false; }
/** * 添加一个联系人数据 * * @return 返回true表示添加成功,false表示失败 */ public boolean insert(String name, String phoneNumber) { //根据号码找数据,如果存在则不添加 if (getNameByPhoneNumber(phoneNumber) == null) { //插入raw_contacts表,并获取_id属性 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentValues values = new ContentValues(); long contact_id = ContentUris.parseId(mResolver.insert(uri, values)); //插入data表 uri = Uri.parse("content://com.android.contacts/data"); //添加姓名 values.put("raw_contact_id", contact_id); values.put(Data.MIMETYPE, "vnd.android.cursor.item/name"); values.put("data2", name); mResolver.insert(uri, values); values.clear(); //添加手机号码 values.put("raw_contact_id", contact_id); values.put(Data.MIMETYPE, "vnd.android.cursor.item/phone_v2"); values.put("data2", "2"); //2表示手机 values.put("data1", phoneNumber); mResolver.insert(uri, values); values.clear(); return true; } else { return false; } }
public static boolean queryFromContact(ContentResolver mResolver, String name, String number) { ContentValues values = new ContentValues(); // 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId String where = Data.MIMETYPE + "=? and " + StructuredName.GIVEN_NAME + "=?"; Cursor mCursor = mResolver.query(ContactsContract.Data.CONTENT_URI, null, where, new String[] { StructuredName.CONTENT_ITEM_TYPE, name}, null); System.out.println("--------------------phone--------------------1"); if (mCursor != null) { while (mCursor.moveToNext()) { String rowId = mCursor.getString(mCursor.getColumnIndex(Data.RAW_CONTACT_ID)); String phoneWhere = Data.MIMETYPE + "=? and " + Phone.NUMBER + "=?"; Cursor mPhoneCur = mResolver.query(ContactsContract.Data.CONTENT_URI, null, phoneWhere, new String[] { Phone.CONTENT_ITEM_TYPE, number}, null); if (mPhoneCur != null) { while (mPhoneCur.moveToNext()) { String phoneRowId = mPhoneCur.getString(mPhoneCur.getColumnIndex(Data.RAW_CONTACT_ID)); if (rowId.equals(phoneRowId)) { mPhoneCur.close(); mCursor.close(); return true; } } } if (mPhoneCur != null) { mPhoneCur.close(); } } } if (mCursor != null) { mCursor.close(); } return false; }