栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 getPhone(){
      List 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.接下来贴主页面布局


  
   
    
   

4.该贴主Activity代码了

public class MainActivity extends AppCompatActivity {
   
   
    private List 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增加点击事件
      
    }
    //自定义适配器
    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.好了这样的话就已经完成了。

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/153739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号