【安卓开发】获取本机手机联系人以及联系电话Demo

130 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

原理描述

  • android中获取手机联系人是通过 ContentResolver类实现的
  • ContentResolver是用来提供android开发者对系统应用及其他应用的数据库进行解析的,通过特定的Uri访问相应的数据库。
  • 进而获取系统应用或者其他应用的应用数据,获取android手机联系人的URL是Phone.CONTENT_URI
  • Phone类提供了很多获取手机联系人的数据库的URI,Phone.CONTENT_URI是手机联系人的根Uri。

AndroidManifest.xml

  • 需要添加获取手机联系人权限
  • 不要忘记添加权限, 如果没有添加动态申请权限的话,可以去设置里面手动打开
  • 在Android6.0以后我们需要手动去获取权限,在下面程序中已经加入
<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.CALL_PHONE" />

xml.java构想

  • 主要就是垂直线性布局,里面放2个TextView和1个Button按钮

MainActivity.java代码

public class MainActivity extends AppCompatActivity {

    private Cursor cursor;
    private TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text = findViewById(R.id.text);
    }

    public void btn(View view) {

        try{
            ContentResolver contentResolver = getContentResolver();
            Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
            cursor = contentResolver.query(uri, null, null, null,null);
            text.setText("");
            while (cursor.moveToNext()){
                String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                text.append("姓名:"+name+"   ");
                text.append("电话号码:"+number);
                text.append("\n");
            }
            cursor.close();
        }catch (Exception ignore){
            Toast.makeText(getApplicationContext(),"",Toast.LENGTH_SHORT).show();
        }
    }
}

设计效果图

  • 刚进入APP

在这里插入图片描述

  • 点击按钮显示手机里的联系人和电话 在这里插入图片描述
  • 手机内存的联系人 在这里插入图片描述 在这里插入图片描述