第9天ContentProvider內容提供者
阿新 • • 發佈:2018-12-26
第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;
}
}