The code is relatively simple ...
Androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="club.seliote.readcontact"> <uses-permission android:name="android.permission.READ_CONTACTS"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="club.seliote.readcontact.MainActivity"> <TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Unknow Data" android:scrollbars="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
Mainactivity.java
Package club.seliote.readcontact; Import Android. Manifest;import Android.content.contentresolver;import Android.content.pm.packagemanager;import Android.database.cursor;import Android.provider.contactscontract;import Android.support.annotation.NonNull; Import Android.support.v4.app.activitycompat;import Android.support.v4.content.contextcompat;import Android.support.v7.app.appcompatactivity;import Android.os.bundle;import Android.text.method.scrollingmovementmethod;import Android.widget.textview;import Android.widget.Toast; Import Java.util.hashmap;import Java.util.Map; public class Mainactivity extends appcompatactivity {@Override protected void onCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); This.setcontentview (R.layout.activity_main); map<string, string> contacts = null; if (Contextcompat.checkselfpermission (Mainactivity.this, Manifest.permission.READ_CONTACTS)! = packagemanager.permission_granted) {ACTIvitycompat.requestpermissions (Mainactivity.this, New string[]{manifest.permission.read_contacts}, 0); } else {contacts = Readcontact (); } String displaystring = "username:phonenumber\n\n"; if (contacts! = null &&!contacts.isempty ()) {for (map.entry<string, string> entry:contacts.en Tryset ()) {displaystring + = Entry.getkey () + ":" + entry.getvalue () + "\ n"; }} TextView TextView = (TextView) This.findviewbyid (R.id.text_view); Textview.setmovementmethod (Scrollingmovementmethod.getinstance ()); Textview.settext (displaystring); } private Map<string, string> readcontact () {map<string, string> contacts = new hashmap<> (); Try (Cursor cursor = MainActivity.this.getContentResolver (). Query (ContactsContract.CommonDataKinds.Phone.CONTENT_U RI, NULL, NULL, NULL, NULL)) {Cursor.movetofirst (); while (!cursor.isaFterlast ()) {String userName = cursor.getstring (Cursor.getcolumnindex (ContactsContract.CommonDataKinds.Pho Ne. Display_name)); String phonenum = cursor.getstring (Cursor.getcolumnindex (ContactsContract.CommonDataKinds.Phone.NUMBER)); Contacts.put (UserName, phonenum); Cursor.movetonext (); }} catch (SecurityException exp) {exp.printstacktrace (); } return contacts; } @Override public void Onrequestpermissionsresult (int requestcode, @NonNull string[] permissions, @NonNull int[] G Rantresults) {Super.onrequestpermissionsresult (Requestcode, permissions, grantresults); Switch (requestcode) {case 0:if (permissions[0] = = Manifest.permission.READ_CONTACTS &&am P Grantresults[0] = = packagemanager.permission_granted) {readcontact (); } else {Toast.maketext (mainactivity.this, "Permisson Deny! ", Toast.length_long). Show (); } break; Default:break; } }}
Run-time permissions in Android get contact information Demo