什麼是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(); } }