1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| private void loadAddressBook() { AndPermission.with(this) .runtime() .permission(Permission.READ_CONTACTS) .rationale((context, data, executor) -> showConfirmDialog(getString(R.string.get_contacts), getString(R.string.contact_rationale), null, null, false, new TwoBtnTextDialog.OnTwoBtnTextClick() { @Override public void onLeftClick(TextView v) { executor.cancel(); } @Override public void onRightClick(TextView v) { executor.execute(); } })) .onDenied(data -> { if (AndPermission.hasAlwaysDeniedPermission(AddressBookActivity.this, data)) { final Setting setting = AndPermission.with(AddressBookActivity.this).runtime().setting(); setting.onComeback(() -> { if (AndPermission.hasPermissions(AddressBookActivity.this, Permission.READ_CONTACTS)) { readContacts(); } }); showConfirmDialog(getString(R.string.permission_set), getString(R.string.set_read_phone_permission), null, null, false, new TwoBtnTextDialog.OnTwoBtnTextClick() { @Override public void onLeftClick(TextView v) { } @Override public void onRightClick(TextView v) { setting.start(); } }); } }) .onGranted(data -> readContacts()) .start(); }
private void readContacts() { mBooks = new ArrayList<>(); Cursor cursor = null; try { cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); if (cursor != 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)); if (number != null) { number = number.replace(" ", ""); } mBooks.add(new AddressBookEntity(displayName, number)); } Log.e("TTT", "books="+ mBooks.toString()); mAdapter.setData(mBooks); mSidebar.setShowString(CollectionUtil.listToString(mAdapter.getLetters())); mSidebar.setTextSize(ScreenAdapterUtil.getInstance().getScaledValue(36)); mLlNoData.setVisibility(CollectionUtil.isEmpty(mBooks) ? View.VISIBLE : View.GONE); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } } }
|