安卓开发从手机获取android qq联系人列表表号码为空怎么解决

Android通讯录管理一之联系人获取
正如我们知道的一样,Android的通讯录和短信管理是通过contentprovider来向开发者来开发接口的。必须从ContentResolver入手去解决。其中通讯录操作涉及到系统源码api的使用,特别是在表的uri上面容易弄混。在接下来的几篇文章中蜗牛将陆续为大家推出Android通讯管理相关知识的文章。其中包括联系人获取、通话记录获取、短信获取、短信详情获取发送短信。废话不多说先上图
先看看联系人的表的结构
其中对于开发这来说主要关注以上三个表,其中要用到联合查询,关于三张表的设计可以百度到相关文章。
代码最终效果图
想要源码的童鞋可以在http://download.csdn.net/detail/waniu123/8554533;
package cn.zxw.contact.
* @author zhan
public class ContactsInfo {
public int _
public ContactsInfo() {
public ContactsInfo(int _id, String name, String phone, String email) {
this._id = _
this.name =
this.phone =
this.email =
public String toString() {
return &PersonInfo [_id=& + _id + &, name=& + name + &, phone=& + phone
+ &, email=& + email + &]&;
获取联系人
* 获取联系人
* @param context
public static List getContactsInfos(Context context) {
ContentResolver resolver = context.getContentResolver();
List infos = new ArrayList();
// 获取联系人数据 访问联系人的内容提供者
// ContactsContract.AUTHORITY com.android.contacts 授权
// 该内容提供者操作是需要读写权限
// matcher.addURI(ContactsContract.AUTHORITY, &raw_contacts&,
// RAW_CONTACTS);
// matcher.addURI(ContactsContract.AUTHORITY, &raw_contacts/#/data&,
// RAW_CONTACTS_DATA);
Uri uri = Uri.parse(&content://com.android.contacts/raw_contacts&);
Cursor cursor1 = resolver.query(uri, new String[] { &_id& }, null,
null, null);
while (cursor1.moveToNext()) {
int _id = cursor1.getInt(0);
ContactsInfo info = new ContactsInfo();
uri = Uri.parse(&content://com.android.contacts/raw_contacts/&
+ _id + &/data&);
Cursor cursor2 = resolver.query(uri, new String[] { &data1&,
&mimetype& }, null, null, null);
while (cursor2.moveToNext()) {
String data1 = cursor2.getString(0);
String mimetype = cursor2.getString(1);
if (&vnd.android.cursor.item/phone_v2&.equals(mimetype)) {// 号码
info.phone = data1;
} else if (&vnd.android.cursor.item/name&.equals(mimetype)) {// 姓名
info.name = data1;
cursor2.close();
infos.add(info);
cursor1.close();
* 获取所有的通话记录
* @param context
List getCallLog(Context context) {
List infos = new ArrayList();
ContentResolver cr = context.getContentResolver();
Uri uri = Calls.CONTENT_URI;
String[] projection = new String[] { Calls.NUMBER, Calls.DATE,
Calls.TYPE };
Cursor cursor = cr.query(uri, projection, null, null, null);
while (cursor.moveToNext()) {
String number = cursor.getString(0);
long date = cursor.getLong(1);
int type = cursor.getInt(2);
infos.add(new CallLogInfo(number, date, type));
cursor.close();
package cn.zxw.
import java.util.ArrayL
import java.util.L
import cn.zxw.contact.domain.ContactsI
import cn.zxw.contact.utils.ContactsMsgU
import android.os.B
import android.view.V
import android.view.ViewG
import android.widget.BaseA
import android.widget.ListV
import android.widget.TextV
import android.app.A
* @author zhan
public class ContactsActivity extends Activity {
private ListV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacts_msg_calllog);
lv = (ListView) findViewById(R.id.lv);
List infos = ContactsMsgUtils
.getContactsInfos(getApplicationContext());
MyAdapter adapter = new MyAdapter(infos);
lv.setAdapter(adapter);
private class MyAdapter extends BaseAdapter {
List infos = new ArrayList();
private TextView tv_
private TextView tv_
public MyAdapter(List infos) {
public int getCount() {
return infos.size();
public Object getItem(int position) {
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(getApplicationContext(),
R.layout.contacts_list_item, null);
tv_number = (TextView) view.findViewById(R.id.tv_number);
tv_name = (TextView) view.findViewById(R.id.tv_name);
ContactsInfo info = infos.get(position);
tv_number.setText(info.phone);
tv_name.setText(info.name);
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'Android手机数据恢复精灵 手机联系人删除了怎么恢复
很少手机用户能够知道,自己日常使用的手机联系人删除了怎么恢复。更多的用户在误删除手机联系人之后,往往都缺乏及时有效的处理办法,最终导致手机联系人信息丢失。解决这一问题的最好办法,当然是能够及时地对手机联系人数据进行备份,这样的好处是一旦发生误删除手机联系人问题的时候,我们可以第一时间完成数据恢复,找回手机删除的联系人信息。
但是并非所有的手机用户都开启了手机的在线备份功能。那么,在没有开启手机在线备份功能的时候,我们应该如何找回手机删除的联系人信息呢?
借助手机数据恢复精灵可以很好地解决这一问题。手机数据恢复精灵并非普通的手机数据恢复软件,而是完全经过认证的用于安卓手机的APP应用。手机数据恢复精灵目前可以从百度、360两大官方应用商店进行下载,这也意味着软件本身已经通过了国内最大的两大应用商店认证,恢复效果具备百分之百保障,APP应用本身也完全免费。
手机数据恢复精灵的主要功能:
1.&&&& 手机通讯录恢复:用来查询用户误删除通话记录的信息,包括联系人的名称,号码,电话发生时间,持续时间以及电话类型(呼入 呼出 未接通)。
2.&&&& 手机通话记录恢复:用来查询用户误删除通话记录的信息,包括联系人的名称,号码,电话发生时间,持续时间以及电话类型(呼入 呼出 未接通)。
3.&&&& 手机短信恢复:用来查询用户误删除短信记录,包括联系人的号码,短信发生时间,短信内容以及短信类型(发送 接收 草稿)。
手机数据恢复精灵使用过程当中需要注意的问题:
1.&&&&&& 手机需要经过Root,可以使用百度一键Root一类的工具;
2.&&&&&& 务必保持手机处于联网状态,WIFI需确保信号充足;
3.&&&&&& 使用过程会连接云端服务器进行解析和恢复,会产生一定的网络流量。
哪里可以下载免费的手机数据恢复精灵?
完全免费的手机数据恢复精灵已经通过百度和360官方认证,可前往上述应用商店自行下载。也可以拿起手机扫描以下二维码直达百度和360应用网页版进行下载。
获取方式一:扫一扫,即可直达手机数据恢复精灵百度手机应用商店下载地址
获取方式一:扫一扫,即可直达手机数据恢复精灵360手机应用商店下载地址
获取方式三:使用手机浏览器,直接访问以下授权页面
/detail/index/soft_id/1926624
/soft/item?docid=6824413
看过本文的人还看过
最新图文推荐
大家感兴趣的内容
&&<a rel="nofollow" class="red" href="" target="_blank" color="red新版网站排行榜
===全新上线===
网友热评的文章android 获取联系人的姓名和电话,无法获取电话
[问题点数:40分,结帖人a]
android 获取联系人的姓名和电话,无法获取电话
[问题点数:40分,结帖人a]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年8月 移动开发大版内专家分月排行榜第三
2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。极客学院温馨提示:您的浏览器需要更新才能访问哦 ( ^_^ )
使用一款优质浏览器,是成为极客的关键一步!
您正在使用的浏览器内核版本过低,除了有可能遭受病毒与恶意软件的侵袭之外,也无法体验到最新互联网技;
术带来的优质显示与交互效果。极客学院网站大量使用了HTML5与CSS3技术,为确保您能够体验到最佳的;
浏览效果,我们推荐您选择使用下列最新的优质浏览器:

我要回帖

更多关于 正在更新联系人列表 的文章

 

随机推荐