本文章转自http://www.javaeye.com/topic/253346,感谢人兄的奉献精神
电话薄在实际的开发中还是很常见的,在论坛中经常有人问,回答的也是事实而非,今天有空做点记录吧。
电话薄的开发无非就是对联系方式的增、删、改、查四种操作,这里可要注意了,在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>添加:
// 添加电话号码
// 最好的办法是先得到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>删除:
<3>更新:
更新麻烦一点,需要先按更新条件找到记录所带的id,之后再做相应的操作