Android应用可以使用ContentResolver对象通过与ContentProvider同名的方法请求执行,被执行的就是ContentProvider中的同名方法。所以ContentProvider有很多对外可以访问的方法,在ContentResolver中均有同名的方法。
Android中自带的ContentProvider包括:
●Browser:存储如浏览器的信息。
●CallLog:存储通话记录等信息。
●Contacts Provider:存储联系人(通讯录)等信息。
●MediaStore:存储媒体文件的信息。
●Settings:存储设备的设置和首选项信息。
代码实例:package com.what21.mybroadcastreceiver;
import android.content.ContentResolver;
import android.content.IntentFilter;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView people_tv;
//希望获得姓名(通讯录内的姓名)
private String columns = ContactsContract.Contacts.DISPLAY_NAME;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
people_tv = findViewById(R.id.module_act_people_tv);
// 将联系人信息显示出来
people_tv.setText(getQueryData());
// 添加访问系统通讯录权限
//
}
private CharSequence getQueryData(){
// 用于保存获取的联系人
StringBuilder stringBuilder = new StringBuilder();
ContentResolver resolver = getContentResolver();
// 查询记录
Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null, null);
// 获取姓名记录的索引值
int displayNameIndex = cursor.getColumnIndex(columns);
// 迭代获取索引
for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
String displayName = cursor.getString(displayNameIndex);
stringBuilder.append(displayName+"\n");
}
// 关闭cursor
cursor.close();
return stringBuilder.toString();
}
}