ContentProvider内容提供者
1.ContentProvider内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能。
自定义内容提供者:
提供者代码:
(1)自定义类继承SQLiteOpenHelper
// An highlighted block
public class MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context){
super(context,"1702C",null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table Student(id integer primary key autoincrement,name var(10),sex varchar(10),birth integer,department varchar(30),address varchar(30))");
db.execSQL("insert into student values (null,'张老大','男',1986,'计算机系','北京市海淀区')");
db.execSQL("insert into student values (null,'张老二','男',1986,'中文系','北京市昌平区')");
db.execSQL("insert into student values (null,'张三','女',1986,'中文系','湖南省永州市')");
db.execSQL("insert into student values (null,'李四','男',1986,'英语系','辽宁省阜新市')");
db.execSQL("insert into student values (null,'王五','女',1991,'英语系','福建省厦门市')");
db.execSQL("insert into student values (null,'王六','男',1998,'计算机系','山西省霍州市')");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
(2)自定义内容提供者类,继承ContentProvider
// An highlighted block
public class MyContentProvider extends ContentProvider {
private MyOpenHelper myOpenHelper;
private SQLiteDatabase db;
@Override
public boolean onCreate() {
// TODO: Implement this to initialize your content provider on startup.
myOpenHelper = new MyOpenHelper(getContext());
db = myOpenHelper.getWritableDatabase();
if (db == null){
return false;
}else{
return true;
}
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
return db.query("student",projection,selection,selectionArgs,null,null,sortOrder);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return db.delete("student",selection,selectionArgs);
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
db.insert("student",null,values);
return uri;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
return db.update("student",values,selection,selectionArgs);
}
}
(3)清单文件中注册内容提供者
// An highlighted block
<provider
android:name=".MyContentProvider"
android:authorities="www.bw.1702C"
android:enabled="true"
android:exported="true"></provider>
内容索要方代码
(1)获取ContentResolver直接获取
// An highlighted block
public class MainActivity extends AppCompatActivity {
private ContentResolver contentResolver;
private Uri uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uri = Uri.parse("content://www.bw.1702C");
contentResolver = getContentResolver();
}
public void query(View view){
}
public void selectPhone(View view){
ContentResolver resolver = getContentResolver();
// Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
// String[] num ={ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor cursor = resolver.query(uri,null, null, null, null);
while (cursor.moveToNext()){
User user = new User();
user.name = cursor.getString(cursor.getColumnIndex("name"));
user.department = cursor.getString(cursor.getColumnIndex("department"));
Log.e("##user",user.toString());
}
}
class User{
String name;
String department;
public User() {
this.name = name;
this.department = department;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", phone='" + department + '\'' +
'}';
}
}
}