自定义ContentProvide访问私有数据
来源:互联网 发布:策略模式 java的概念 编辑:程序博客网 时间:2024/06/07 01:19
通过自定义的ContentProvide可以访问私有数据,系统中也有许多ContentProvide,例如短信,联系人等
创建步骤:
1)先得创建数据库,通过SQLiteOpenHelper创建数据库,在onCreate方法中创建表
public class MySqlit extends SQLiteOpenHelper {
public MySqlit(Context context) {
super(context, "people", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table person(_id integer primary key autoincrement,name char(10),num char(11))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
在MainActivity中
MySqlit sqlit=new MySqlit()
sqlit.getReadableDatabase();
这样就创建了数据表person
2)创建ContentProvide类,继承ContentProvide实现它的方法并重写,同时在xml文件中注册,注册时一定要指定authorities
public class MyProvider extends ContentProvider {
SQLiteDatabase db;
@Override
public boolean onCreate() {
MySqlit sqlit=new MySqlit(getContext());
db=sqlit.getReadableDatabase();
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor cursor=db.query("person", projection, selection, selectionArgs, sortOrder, null, null);
return cursor;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
db.insert("person", null, values);
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int i=db.delete("person", selection, selectionArgs);
return i;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return 0;
}
}
这时已经创建了ContentProvide,在其他应用中可以通过ContentResolver来访问数据,并对数据表操作
3)访问数据,操作数据表
插入数据
ContentResolver result=getContentResolver();
ContentValues values=new ContentValues();
values.put("name", "heizi");
values.put("num", "18829345933");
result.insert(Uri.parse("content://com.provider"), values);
查询数据
ContentResolver result=getContentResolver();
Cursor cursor=result.query(Uri.parse("content://com.provider"), null, null, null, null);
while(cursor.moveToNext()){
String name=cursor.getString(0);
String num=cursor.getString(1);
System.out.println("name:"+name+" "+"num:"+num);
}
4)系统的ContentProvide也可以通过此种凡是来查询,修改等操作
Uri可以到源码里查询
- 自定义ContentProvide访问私有数据
- 自定义ContentProvide
- ContentProvide
- 访问自定义控件的私有属性
- 使用成员函数访问私有数据成员
- 对象私有数据的可访问性
- 类的私有数据成员的访问
- 体验用函数访问私有数据成员
- 利用指针访问私有数据成员
- 利用函数访问私有数据成员
- 利用引用访问私有数据成员
- 类中私有数据成员的可访问性
- 用指针访问私有数据和函数的探讨
- 友函数访问类的私有数据成员
- 一个类的友元类能访问类的私有数据
- 子类无权访问父类的私有数据成员
- 拷贝构造函数可以访问私有数据成员
- Android应用的私有数据被其他应用访问
- Firefox成为渗透测试工具的18个插件
- 趣味博客杂谈
- C#网络程序设计1-5:方法回调、委托、线程的综合运用
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会
- 【python gensim使用】word2vec词向量处理英文语料
- 自定义ContentProvide访问私有数据
- Java File文件操作
- zeppelin下写python程序
- ubuntu terminator字体挤在一起问题 大小设置
- rbac数据库设计
- U盘安装centos 7,恢复原有win7引导区
- laravel5.1redis队列重复执行问题
- union与union all的共同点与区别
- Ubuntu16.04如何截图,Ubuntu16.04如何裁剪图片,Ubuntu16.04如何打马赛克