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); } }
安卓读取手机联系人
最新推荐文章于 2021-05-25 21:22:04 发布