安卓读取手机联系人

1、在manifest增加权限
<uses-permission android:name="android.permission.READ_CONTACTS" /><!-- 读取联系人 -->
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> <!-- 写入联系人 -->

public class MainActivity extends AppCompatActivity {
    private Button buttonQuery;
    private Button buttonNext;
    private EditText txtName;
    private EditText txtTel;
    private TextView viewCount;
    private int Seqno;
    private ArrayList<Contact> contactsList;  //联系人列表

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonQuery = (Button) findViewById(R.id.buttonQuery);
        buttonNext = (Button) findViewById(R.id.buttonNext);
        txtName = (EditText) findViewById(R.id.txtName);
        txtTel = (EditText) findViewById(R.id.txtTel);
        viewCount = (TextView) findViewById(R.id.viewCount);
        contactsList = new ArrayList<Contact>();
        askForPermission();  //动态申请权限
    }

    public void doClick(View view) {
        String sText ;
        Contact con = null;
        switch (view.getId()){
            case R.id.buttonNext:
                if (contactsList.size()==0){
                    return;
                }
                if (Seqno+1==contactsList.size()){
                    Seqno = 0;
                }

                con = contactsList.get(Seqno);
                txtName.setText(con.getContactName());
                txtTel.setText(con.getContactTel());
                sText=String.format("共计%d条,当前第%d条",contactsList.size(),Seqno+1);
                viewCount.setText(sText);
                Seqno++;

                break;
            case R.id.buttonQuery:
                readContact();
                Seqno = 0;
                if (contactsList.size()>0){
                    con = contactsList.get(Seqno);
                    txtName.setText(con.getContactName());
                    txtTel.setText(con.getContactTel());
                    sText=String.format("共计%d条,当前第%d条",contactsList.size(),Seqno+1);
                    viewCount.setText(sText);
                    Seqno++;
                }
                break;
        }
    }

    private void readContact() {
        Cursor cursor = null;
        try {// 查询联系人数据
            cursor = getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null, null, null, null);
            while (cursor.moveToNext()) {
                // 获取联系人姓名
                String displayName = cursor.getString(cursor.getColumnIndex(
                        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                // 获取联系人手机号
                String number = cursor.getString(cursor.getColumnIndex(
                        ContactsContract.CommonDataKinds.Phone.NUMBER));
                Contact con = new Contact(displayName,number);
                contactsList.add(con);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //权限回调
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode)
        {
            //用户开启了权限
            case 1:
                if(grantResults.length>0&&grantResults[0]== PackageManager.PERMISSION_GRANTED)
                {
                    readContact();
                }
                else
                {
                    //用户禁止了权限
                    Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
    //申请权限
    private void askForPermission() {
        String[] permissions = new String[]{Manifest.permission.READ_CONTACTS};
        ActivityCompat.requestPermissions(this, permissions, 1);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值