要访问安卓手机里的通讯录、短信、媒体库等,要用内容提供器,要用到ContentResolver类,通过ContextgetContentResolver()就可以获取到该实例,该实例可以增删查改。
测试小实例:

AndroidManifest.xml 配置用到的权限

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.contactstest">    <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>    <uses-permission android:name="android.permission.READ_CONTACTS"/>manifest>

activity_main.xml ListView布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_height="match_parent"    android:layout_width="match_parent">    <ListView        android:id="@+id/contacts_view"        android:layout_width="match_parent"        android:layout_height="match_parent">    ListView>LinearLayout>

入口 MainActivity.java

package com.example.contactstest;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;import android.Manifest;import android.content.pm.PackageManager;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    ArrayAdapter<String> adapter;    List<String> contactsList = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ListView contactsView = 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, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(this, new String[]{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, String[] permissions, int[] grantsResults) {        switch (requestCode) {            case 1:                if(grantsResults.length > 0 && grantsResults[0] == PackageManager.PERMISSION_GRANTED) {                    readContacts();                } else {                    Toast.makeText(this, "您阻止了权限!", Toast.LENGTH_SHORT).show();                }                break;                default:        }    }}

更多相关文章

  1. android应用安全——组件通信安全(Intent)
  2. 浅析Android录屏 MediaRecorder
  3. [Android实例] android中进行https连接的方式的详解 (转发)
  4. 【Android(安卓)初学】1、Activity初步
  5. Android桌面小组件:最简例子
  6. 时间和日期选择器DatePicker和TimePicker的使用
  7. 关于Android(安卓)6.0上应用的动态权限授权解决方案!
  8. Android应用开发SharedPreferences存储数据的使用方法
  9. android(10) 左侧菜单栏

随机推荐

  1. 谷歌Android被Linux内核除名(转)
  2. android CountDownTimer 倒计时
  3. Android(安卓)常用开源库总结-2020年
  4. Android(安卓)recovery 下使用 updater-s
  5. 为Android加入busybox工具
  6. android 使用Intent传递数据之静态变量
  7. android:onClick都做了什么
  8. Google Android开发精华教程
  9. textView 属性总结
  10. android 图片浏览功能 图片放大缩小 使用