Android获取手机联系人列表的方法

本文实例为大家分享了Android获取手机联系人列表的具体代码,供大家参考,具体内容如下

下面直接贴代码

1.先写一个实体类,来放名字和号码

public class PhoneDto {

private String name; //联系人姓名

private String telPhone; //电话号码

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getTelPhone() {

return telPhone;

}

public void setTelPhone(String telPhone) {

this.telPhone = telPhone;

}

public PhoneDto() {

}

public PhoneDto(String name, String telPhone) {

this.name = name;

this.telPhone = telPhone;

}

}

2.写我们获取联系人的工具类

public class PhoneUtil {

// 号码

public final static String NUM = ContactsContract.CommonDataKinds.Phone.NUMBER;

// 联系人姓名

public final static String NAME = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;

//上下文对象

private Context context;

//联系人提供者的uri

private Uri phoneUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

public PhoneUtil(Context context){

this.context = context;

}

//获取所有联系人

public List<PhoneDto> getPhone(){

List<PhoneDto> phoneDtos = new ArrayList<>();

ContentResolver cr = context.getContentResolver();

Cursor cursor = cr.query(phoneUri,new String[]{NUM,NAME},null,null,null);

while (cursor.moveToNext()){

PhoneDto phoneDto = new PhoneDto(cursor.getString(cursor.getColumnIndex(NAME)),cursor.getString(cursor.getColumnIndex(NUM)));

phoneDtos.add(phoneDto);

}

return phoneDtos;

}

}

3.接下来贴主页面布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.test.content.MainActivity">

<ListView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/lv_main_list"></ListView>

</LinearLayout>

4.该贴主Activity代码了

public class MainActivity extends AppCompatActivity {

private List<PhoneDto> phoneDtos;

private ListView lv_main_list;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

check();

}

/**

* 检查权限

*/

private void check() {

//判断是否有权限

if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CONTACTS)

!= PackageManager.PERMISSION_GRANTED){

ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_CONTACTS},201);

}else{

initViews();

}

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

if(requestCode==201){

initViews();

}else{

return;

}

}

private void initViews() {

PhoneUtil phoneUtil = new PhoneUtil(this);

phoneDtos = phoneUtil.getPhone();

lv_main_list = (ListView) findViewById(R.id.lv_main_list);

MyAdapter myAdapter = new MyAdapter();

lv_main_list.setAdapter(myAdapter);

//给listview增加点击事件

/*lv_main_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

//拨打电话

Intent intent = new Intent();

intent.setAction("android.intent.action.CALL");

intent.addCategory(Intent.CATEGORY_DEFAULT);

intent.setData(Uri.parse("tel:"+phoneDtos.get(position).getTelPhone()));

startActivity(intent);

}

});*/

}

//自定义适配器

private class MyAdapter extends BaseAdapter {

@Override

public int getCount() {

return phoneDtos.size();

}

@Override

public Object getItem(int position) {

return phoneDtos.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@SuppressLint("NewApi")

@Override

public View getView(int position, View convertView, ViewGroup parent) {

PhoneDto phoneDto = phoneDtos.get(position);

LinearLayout linearLayout = new LinearLayout(MainActivity.this);

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);

layoutParams.weight = 1;

TextView tv_name = new TextView(MainActivity.this);

tv_name.setId(View.generateViewId());

tv_name.setLayoutParams(layoutParams);

tv_name.setText(phoneDto.getName());

TextView tv_num = new TextView(MainActivity.this);

tv_num.setId(View.generateViewId());

tv_num.setLayoutParams(layoutParams);

tv_num.setText(phoneDto.getTelPhone());

linearLayout.addView(tv_name);

linearLayout.addView(tv_num);

return linearLayout;

}

}

}

5.好了这样的话就已经完成了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 Android获取手机联系人列表的方法 的全部内容, 来源链接: utcz.com/p/243078.html

回到顶部