讀取手機聯絡人,顯示到佈局裡
阿新 • • 發佈:2018-11-06
- 讀取聯絡人在 Android 6.0 以上要動態獲取許可權
- SDK 小於 23 要在 AndroidManifest.xml 註冊許可權
示例效果:
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CONTACTS"/>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" tools:context=".MainActivity"> <Button android:onClick="btnQuery" android:text="查詢聯絡人" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ListView android:id="@+id/LV" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity { private ListView listView; private ContentResolver contentResolver; List<String> datas = new ArrayList<>(); Cursor cursor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.LV); contentResolver = getContentResolver(); } // 檢查許可權 public void btnQuery(View view) { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED ) { if (Build.VERSION.SDK_INT >= 23) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 123); } } else { // 查詢所有聯絡人 requestDatas(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 123 && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) { cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); requestDatas(); } } private void requestDatas() { datas.clear(); cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID)); String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); datas.add("id:" + id + " - 姓名:" + displayName + " - 電話:" + number + " "); } Toast.makeText(this, "" + datas.size(), Toast.LENGTH_SHORT).show(); cursor.close(); listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, datas)); } } }