1.activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.sh.contactstest.MainActivity"> <ListView android:id="@+id/contacts_view" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </LinearLayout>
2.MainActivity.java
public class MainActivity extends AppCompatActivity { ArrayAdapter<String> adapter; List contactsList = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView contactsView = (ListView)findViewById(R.id.contacts_view); adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactsList); contactsView.setAdapter(adapter); if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.READ_CONTACTS},1); } else{ readContacts(); } } private void readContacts() { 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))); contactsList.add(displayName + "\n" + number); } adapter.notifyDataSetChanged(); } } catch(Exception e) { e.printStackTrace(); }finally { if (cursor != null) { cursor.close(); } } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch ( requestCode){ case 1: if (grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ readContacts(); }else { Toast.makeText(this, "you denied the permission", Toast.LENGTH_SHORT).show(); } break; default: } } }
3.AndroidManifest.xml
<manifest package="com.sh.contactstest" xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.READ_CONTACTS"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" 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>