1 什么是ContenProvder?
(1) ContenProvder是android四大组件之一,用来共享两个应用程序的内的数据,就是当你需要把你应用程序的东西分享给其他的应用程序的时候我们才会用到它,ContenProvder对外提供了其他应用可以直接访问的增删改查的方法。一旦使用ContenProvder让别人来访问自己的数据,不管应用程序是否打开都可以访问的到。
(2)每个ContenProvder都有一个公共的Uri,用于表示ContenProvder所提供的数据。
就好比是android内部的网站,地址是Uri。ContenProvder的Uri代表要操作的数据,由scheme,authorites,path三部分组成。
scheme:固定为content,也就是协议。
authorites:节点中的属性。
path:资源路径。可根据逻辑业务定义。
(3)发送请求必须要由ContenProvder发出,它相当于就是一个客户端。
2 如何创建ContenProvder?
定义一个类继承contentprovder重写里面的方法。配置清单文件
清单文件配置:
<provider
android:authorities="com.zking.android16_sqlite.data"
android:name="com.zking.prvoide.MyPrvoider"
android:exported="true">
</provider>
代码:
public class MyPrvoider extends ContentProvider {
private SQLiteDatabase sqLiteDatabase;
@Override
public boolean onCreate() {
Log.i("test","+onCreate()" );
DbHelper dbHelper=new DbHelper(getContext(),"G150831.db",null,2);
sqLiteDatabase = dbHelper.getReadableDatabase();
return false;
}
@Nullable
@Override
public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
Log.i("test","query" );
return sqLiteDatabase.query(true,"person",strings,s,strings1,null,null,s1,null);
}
@Nullable
@Override
public String getType(Uri uri) {
return null;
}
@Nullable
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
return null;
}
@Override
public int delete(Uri uri, String s, String[] strings) {
return 0;
}
@Override
public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
return 0;
}
}