TextView tv = new TextView(this);
String string = "";
super.onCreate(savedInstanceState); //得到ContentResolver对象
ContentResolver cr = getContentResolver(); //取得电话本中开始一项的光标
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
//向下移动光标
while(cursor.moveToNext()) { //取得联系人名字
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFieldColumnIndex); //取得电话号码
String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
//TYPE_MOBILE : 手机号码TYPE_HOME : 住宅电话TYPE_WORK : 公司电话
while(phone.moveToNext()) {
String PhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
string += (contact + ":" + PhoneNumber + "\n");
}
}
cursor.close(); //设置TextView显示的内容
tv.setText(string); //显示到屏幕
setContentView(tv);
}
这段代码,照理说得出的应该是Android手机本地的联系人信息而不是SIM卡的。可是在真机运行过程中得到的都是SIM卡内的联系人信息。。这是为什么呢。。。大家帮帮忙,看下啦。小弟拜谢。。。。
------解决方案--------------------
你的uri写错了,
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
这里的ContactsContract.Contacts.CONTENT_URI,指的就是从SIM中获取,
要从手机中获取应该用Phone.CONTENT_URI。