• android2.1获得联系人信息
  • 系出名门Android(9) - 数据库支持(SQLite),
  • Android content provider基础与使用

推荐群组: Android 更多相关推荐

Android

电话薄在实际的开发中还是很常见的,在论坛中经常有人问,回答的也是事实而非,今天有空做点记录吧。

电话薄的开发无非就是对联系方式的增、删、改、查四种操作,这里可要注意了,在Android里面给用户的权限更大,可以修改和删除已有的联系人的信息,与J2me PIM不一样哦。在Android系统里面正对联系人的操作是被划分在Content Providers里面,用做好类似的开发,需要了解的知识:Uri(不是Url)、Android的权限控制、Android的联系方是表的字段等等。

有了上面的知识其实就可以开发增删改查的功能了,在网络上面看的基本只有增和查,在这里重点也在更新和删除,注意在做涉及到网系统读写的操作的时候,要在你的AndroidMainfest.xml里面把权限打开:

<uses-permission android:name="android.permission.WRITE_CONTACTS" />

<uses-permission android:name="android.permission.READ_CONTACTS" />

这里读和写的权限都要打开,与我们一般的思路有点不一样,这里读写权限是分开的,要是还想打电话就要也要把其对应的权限打开

<uses-permission android:name="android.permission.CALL_PHONE" />

这些都是一些很细节性的基础东西,对于初学者很有必要注意哦,有的时候这些简单的基础东西没有注意可能会然他你死活找不到bug所在。

废话少说,下面贴点代码:

<1>添加:

public boolean insert(String name, String phoneNum, String email, String qq) {

if (name == null) {

Log.e(TAG, "The Name is not allow null!!");

return false;

}

try {

ContentResolver contentResolver = mContext.getContentResolver();

ContentValues values = new ContentValues();

Uri phoneUri = null;

// 添加姓名

values.put(Contacts.People.NAME, name);

// 映射关系:1 = 新的联系方式加入 favorites,0 = 新的联系方式不是加入 favorites

values.put(Contacts.People.STARRED, 1);

Uri uri = Contacts.People.createPersonInMyContactsGroup(contentResolver, values);

// 添加电话号码

// 最好的办法是先得到People表的Uri,然后使用Uri的静态方法withAppendedPath来获取一个新的Uri作为我们新要插入数据的Uri

if (phoneNum != null && !phoneNum.trim().equals("")) {

phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);

values.clear();

values.put(Contacts.Phones.TYPE, Contacts.Phones.NUMBER);

values.put(Contacts.Phones.NUMBER, phoneNum);

contentResolver.insert(phoneUri, values);

}

if (email != null && !email.trim().equals("")) {

// 添加Email

Uri emailUri = Uri.withAppendedPath(uri, Contacts.People.ContactMethods.CONTENT_DIRECTORY);

values.clear();

// ContactMethods.KIND 是用来区分像email,im等等不同联系方式

values.put(Contacts.ContactMethods.KIND, Contacts.KIND_EMAIL);

values.put(Contacts.ContactMethods.DATA, email);

values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);

contentResolver.insert(emailUri, values);

}

if (qq != null && !qq.trim().equals("")) {

// 添加QQ号码

values.clear();

Uri qqUri = Uri.withAppendedPath(uri, Contacts.People.ContactMethods.CONTENT_DIRECTORY);

values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM);

values.put(Contacts.ContactMethods.DATA, qq);

values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);

contentResolver.insert(qqUri, values);

}

} catch (Exception e) {

Log.e(TAG, "InsertContact Error !!!!");

return false;

}

return true;

}

<2>删除:

public boolean delete(String name) {

ContentResolver contentResolver = mContext.getContentResolver();

if (name != null)

contentResolver.delete(Contacts.People.CONTENT_URI, Contacts.People.NAME + "=?", new String[] { name });

else

contentResolver.delete(Contacts.People.CONTENT_URI, null, null);

return true;

}

<3>更新:

更新麻烦一点,需要先按更新条件找到记录所带的id,之后再做相应的操作。

ContentResolver contentResolver = mContext.getContentResolver(); Cursor cusor = null; String[] projection = new String[] { Contacts.People._ID, Contacts.People.NAME, Contacts.People.NUMBER }; cusor = contentResolver.query(Contacts.People.CONTENT_URI, projection, Contacts.People.NAME + "=?", new String[] { oldName }, Contacts.People.NAME + " ASC"); cusor.moveToFirst(); ContentValues values = new ContentValues(); Uri uri = Uri.withAppendedPath(Contacts.People.CONTENT_URI, cusor.getString(cusor.getColumnIndex(Contacts.People._ID))); values.put(Contacts.People.NAME, newName); values.put(Contacts.People.STARRED, 0); values.put(Contacts.Phones.NUMBER, newPhoneNum); contentResolver.update(uri, values, null, null);

更多相关文章

  1. Android下玩JNI的新老三种姿势
  2. Android(安卓)Studio Gradle 添加.so 支持文件
  3. android:windowBackground 和 Android:background 的区别
  4. Android与JavaScript相互调用(Android和h5交互)
  5. Android(安卓)Studio导入第三方类库的方法
  6. Android(安卓)常用UI控件的一些属性设置(在.xml文件里进行的设置
  7. Cordova与Android之一 Activity跳转
  8. Android(安卓)远程调试 JNI 实现 ( Android(安卓)JNI remote debu
  9. Android(安卓)单选框RadioGroup

随机推荐

  1. android 9.png图片详解
  2. android Listview 与 Scrollview 共存的
  3. Android材料设计兼容函数库(Design Suppor
  4. Android(安卓)Studio详细的安装以及环境
  5. Android(安卓)NDK下编译google protocol
  6. 学无止境:8月最热免费优秀资源推荐
  7. 在/data/下创建文件的权限问题
  8. android 四大控件之ContentProvider
  9. 用Android(安卓)NDK编译FFmpeg
  10. IT成长路-2015总结篇