什么是Content Providerjava
建立和使用Content Provider的步骤:android
图片从视频网上copy的app
下面写一个利用Content Provider 读取手机通信录联系人姓名,并将名字显示在TextView中ide
xml代码ui
<?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=".Demo01"> <TextView android:id="@+id/module_act_people_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </android.support.constraint.ConstraintLayout>
Java代码, 里面该有的都注释了code
public class Demo01 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_demo01); people_tv = findViewById(R.id.module_act_people_tv); //将联系人信息显示出来 people_tv.setText(getQueryData()); //添加访问系统通信录权限 //<uses-permission android:name="android.permission.READ_CONTACTS" /> } 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(); } }