Android四大组件—ContentProvider
来源:互联网 发布:windows bat脚本sleep 编辑:程序博客网 时间:2024/05/16 23:47
1.内容提供器简介
内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能, 它提供了一套完整的机制,允许一个程序访
问另一个程序中的数据,同时还能保证被访数据 的安全性。目前,使用内容提供器是 Android 实现跨程序共享数据的标准方式。
不同于文件存储和 SharedPreferences 存储中的两种全局可读写操作模式,内容提供器可 以选择只对哪一部分数据进行共享,从而
保证我们程序中的隐私数据不会有泄漏的风险。
内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序中 的数据,另一种是创建自己的内容提供器给
我们程序的数据提供外部访问接口。那么接下来 我们就一个一个开始学习吧,首先从使用现有的内容提供器开始。
2.创建一个应用用来被访问数据
1).创建一个类继承ContentProvide
public class BankBackDoor extends ContentProvider { Open open; @Override public boolean onCreate() { Log.e("main","onCreate"); return false; } @Nullable @Override public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) { Log.e("main","query"); open=new Open(getContext()); String[] name=new String[]{"潘宇田"}; Cursor cursor=open.sqLiteDatabase.rawQuery("select * from lkh where name=?",name);// cursor.moveToFirst();// ArrayList arrayList=new ArrayList();// if(cursor.moveToNext()){// arrayList.add(cursor.getString(2)); //} return cursor; } @Nullable @Override public String getType(@NonNull Uri uri) { Log.e("main","getType"); return null; } @Nullable @Override public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) { Log.e("main","insert"); open=new Open(getContext()); open.sqLiteDatabase.execSQL("insert into lkh(id,name,age) values (2,'潘宇田','18')"); return null; } @Override public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) { Log.e("main","delete"); return 0; } @Override public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) { Log.e("main","update"); return 0; }}
2).创建数据库类:
public class Open extends SQLiteOpenHelper { SQLiteDatabase sqLiteDatabase; public Open(Context context) { super(context, "pyt.db", null, 1); sqLiteDatabase=getWritableDatabase(); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("create table lkh(id integer [not null] [primary key],name text,age text)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { }}
3).在清单中注册Provide:
<provider android:name="com.zhy.magicviewpager.sample.BankBackDoor" android:authorities="com.po.oo" android:exported="true" >
3.创建另一个应用访问数据:
1).点击事件操作数据库:
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {// ContentResolver resolver=getContentResolver(); Uri uri=Uri.parse("content://com.po.oo"); ContentValues values=new ContentValues(); Cursor cursor=resolver.query(uri,null,null,null,null); cursor.moveToFirst(); if(cursor.moveToNext()){ String ss=cursor.getString(cursor.getColumnIndex("name")); Log.e("main",ss); } }});
4.得出结果:
12-15 17:07:59.698 14509-14509/com.example.myapplication E/main: 潘宇田
阅读全文
0 0
- Android四大组件—ContentProvider
- Android四大组件—ContentProvider
- Android四大组件—ContentProvider
- Android四大组件-ContentProvider
- Android四大组件-ContentProvider
- android四大组件---ContentProvider
- android四大组件--ContentProvider
- android四大组件--ContentProvider
- Android四大组件ContentProvider
- Android四大组件——ContentProvider
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- Android四大组件之ContentProvider
- android四大组件之ContentProvider
- android四大组件之 ContentProvider
- iOS开发日志:多屏幕适配
- 学习《如何提升你的能力?给年轻程序猿的几条建议》文章笔记
- 电脑注册多个版本的tomcat为系统服务
- Android页面跳转结束前一个activity
- SpringMVC,ajax实现省市区三级联动
- Android四大组件—ContentProvider
- 二〇一七年十二月十五日 17:01:32
- android_布局
- Yii2.0安全之加密/解密
- java的this关键词
- 文章标题
- todo_mvp_rxjava 简化版本
- Java常见异常总结
- ionic2 pop 传参数