1. 程式人生 > >第9天ContentProvider內容提供者

第9天ContentProvider內容提供者

第9天ContentProvider內容提供者

ContentProvider

一.ContentProvider介紹:

1.ContentProvider內容提供者(四大元件之一)主要用於在不同的應用程式之間實現資料共享的功能。
2.技能get點:
(1)訪問系統自帶的內容提供者(******)
手機聯絡人/音訊/視訊/相簿/簡訊/系統設定
(2)自己寫內容提供者
3.2個重要的類
(1)ContentProvider:內容提供者
(2)ContentResolver:內容索要方

二.獲取手機聯絡人,展現在ListView中並存儲到資料庫中

(1)新增獲取手機聯絡人的許可權

 <uses-permission android:name="android.permission.READ_CONTACTS" />

(2)獲得手機聯絡人,展現在ListView中 並將資訊儲存到資料庫中
uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
欄位:ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME:姓名
ContactsContract.CommonDataKinds.Phone.NUMBER:電話

 //獲取手機聯絡人
    public void click1(View view) {
        //TODO 1:獲得ContentResolver
        ContentResolver resolver = getContentResolver();
        //TODO 2:確定uri和要查詢的欄位
        Uri uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        String[] strs={ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
,ContactsContract.CommonDataKinds.Phone.NUMBER}; //TODO 3:執行查詢並將結果遍歷展現在ListView中和儲存到本地的資料庫中 Cursor cursor=resolver.query(uri,strs,null,null,null); ArrayList<Phone> list=new ArrayList<>(); while(cursor.moveToNext()){ String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); list.add(new Phone(name,number)); //將每條記錄儲存到自己的資料庫中 } //將list集合中的資料展現在ListView中,此處省略 } class Phone{ private String name; private String number; public Phone(String name, String number) { this.name = name; this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }

三.獲取手機簡訊

(1)新增獲取手機簡訊的許可權

 <uses-permission android:name="android.permission.READ_SMS" />

(2)獲得簡訊內容,展現在ListView中 並將資訊儲存到資料庫中
uri:Telephony.Sms.CONTENT_URI
欄位:Telephony.Sms.ADDRESS 地址 Telephony.Sms.BODY 內容

//獲取簡訊
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    public void click2(View view) {
        ContentResolver resolver = getContentResolver();
        Uri uri= Telephony.Sms.CONTENT_URI;
        String[] strs={Telephony.Sms.BODY,Telephony.Sms.ADDRESS};
        Cursor cursor=resolver.query(uri,strs,null,null,null);
        //第一種ListView 中  第二種 :存到資料庫
        ArrayList<Msm> list=new ArrayList<>();
        while(cursor.moveToNext()){
            String address=cursor.getString(cursor.getColumnIndex(Telephony.Sms.ADDRESS));
            String body=cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY));
            list.add(new Msm(address,body));
            //執行insert語句
        }

    }
    class Msm{
        private String address;
        private String body;

        public Msm(String address, String body) {
            this.address = address;
            this.body = body;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public String getBody() {
            return body;
        }

        public void setBody(String body) {
            this.body = body;
        }
    }