Android Content Provider(內容提供者)

什麼是Content Providerjava

  • 應用程序間共享數據的一種方式
  • 爲存儲和獲取數據提供了統一的接口
  • Android爲常見的一些數據提供了默認的ContentProvider
  • Uri : 通用資源標識符

 建立和使用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();
    }

}
相關文章
相關標籤/搜索