看到某些App里面有读取联系人的功能,然后自己尝试了一下。发现这个挺简单的。然后自己就做了一个demo给大家,希望借这个demo可以让大家学习一下怎么实现读取手机联系人。
这里我用了两种方法去读取:第一张图片是跳转到系统自带的联系人界面,第二种就是直接去读取让后绑上来显示在主页面。话不多说直接上代码。
记得在AndroidManifest.xml 记得加入这两句,不然就读取不到联系人。
代码如下packagecom.example.android_contentersolver;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.DialogInterface;
importandroid.content.Intent;
importandroid.database.Cursor;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.provider.Contacts;
importandroid.provider.ContactsContract;
importandroid.telephony.PhoneStateListener;
importandroid.telephony.TelephonyManager;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.CheckBox;
importandroid.widget.ListView;
importandroid.widget.TextView;
publicclassMainActivityextendsActivity {
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.main_btn).setOnClickListener(newOnClickListener() {
@Override
publicvoidonClick(View v) {
// TODO Auto-generated method stub
//查询联系人号码
finalCursor cursor = getContentResolver()
.query(ContactsContract.CommonDataKinds
.Phone.CONTENT_URI,null,null,null,null);
BaseAdapter adapter =newBaseAdapter()
{
@Override
publicintgetCount()
{
returncursor.getCount();
}
@Override
publicObject getItem(intposition)
{
returnposition;
}
@Override
publiclonggetItemId(intposition)
{
returnposition;
}
@Override
publicView getView(intposition,
View convertView, ViewGroup parent)
{
cursor.moveToPosition(position);
// CheckBox rb = new CheckBox(MainActivity.this);
TextView text=newTextView(MainActivity.this);
// 获取联系人的电话号码,并去掉中间的中划线、空格
String number = cursor
.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds
.Phone.NUMBER))
.replace("-","")
.replace(" ","");
// rb.setText(number);
String name = cursor
.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds
.Phone.DISPLAY_NAME));
text.setText("名字:"+name+" 电话号码:"+number);
returntext;
}
};
//加载listview
ListView listview=(ListView) findViewById(R.id.mian_list);
listview.setAdapter(adapter);
}
});
//跳转系统的联系人界面
findViewById(R.id.main_btn_sys).setOnClickListener(newOnClickListener() {
@Override
publicvoidonClick(View v) {
// TODO Auto-generated method stub
Intent intent=newIntent();
intent.setAction(intent.ACTION_PICK);
intent.setType("vnd.android.cursor.dir/phone");
startActivityForResult(intent,0x100);
}
});
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Uri uri=data.getData();
Cursor cursor = getContentResolver()
.query(uri,null,null,null,null);
while(cursor.moveToNext()){
String name=cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NAME));
String number=cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NUMBER));
TextView textview=(TextView) findViewById(R.id.mian_lists);
textview.setText("名字:"+name+" 电话号码:"+number);
}
}
}
【android studio】Android ContentProvider查看/读取手机联系人实例
http://m.bbyears.com/asp/124245.html
推荐访问:android学习路线