ContentProvider内容提供者与ContentResolver内容访问者
2017-02-06 21:57
495 查看
刚好接触到ContentProvider内容提供者与ContentResolver内容访问者,对它进行了一个初步的了解,它主要用于不同的应用程序之间实现数据的共享,允许一个程序访问另一个程序,还可以保证数据的安全。
以下是我写的一个简单的ContentProvider与ContentResolver的一个列子:
首先创建两个dome分别为android1和android2。android1为内容提供者,android2为内容访问者,在android1中创建类ContentProvi继承ContentProvider实现六个方法:
在android1中的清单文件AndroidManifest.xml需要进行以下配置:
在android2中通过
以下是我写的一个简单的ContentProvider与ContentResolver的一个列子:
首先创建两个dome分别为android1和android2。android1为内容提供者,android2为内容访问者,在android1中创建类ContentProvi继承ContentProvider实现六个方法:
public class ContentProvi extends ContentProvider { private DbHelper dbHelper; private SQLiteDatabase sqLiteDatabase; @Override public boolean onCreate() {
dbHelper = new DbHelper(getContext(),"person.db",null,2); sqLiteDatabase = dbHelper.getReadableDatabase(); return false; } //查询 @Nullable @Override public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1){ return sqLiteDatabase.query(false,"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) { sqLiteDatabase.insert("person","name",contentValues); return null; } //删除 @Override public int delete(Uri uri, String s, String[] strings) { sqLiteDatabase.delete("person",s,strings); return 0; } //修改 @Override public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { sqLiteDatabase.update("person",contentValues,s,strings); return 0; }
在android1中的清单文件AndroidManifest.xml需要进行以下配置:
<provider
//可以自己定义android:authorities="com.example.android_15.1"
//提供者中继承了ContentProvider 的类名路径android:name="com.example.android_15.ee.ContentProvi" android:exported="true"></provider>
在android2中通过
ContentResolver cr = getContentResolver();
实例化对象ContentResolver通过ContentResolver实现
以下是实现的基础的增删改查
查询:
//uri中的值在需要满足content://协议后面的为你在内容提供者配置文件AndroidManifest.xml中
authorities定义的名字
uri = Uri.parse("content://com.example.android_15.1"); Cursor c=cr.query(uri,null,null,null,null); while (c.moveToNext()){ int id=c.getInt(0); String name=c.getString(1); int page=c.getInt(2); Toast.makeText(MainActivity.this,name+ "", Toast.LENGTH_SHORT).show(); }
增加:
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
uri = Uri.parse("content://com.example.android_15.1");
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
cr.insert(uri,values);
删除:
int id=Integer.parseInt(et_main_id.getText().toString());
uri = Uri.parse("content://com.example.android_15.1");
cr.delete(uri,"_id=?",new String[]{id+""});
修改:
uri = Uri.parse("content://com.example.android_15.1");
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
cr.update(uri,values,"_id=?",new String[]{id+""});
相关文章推荐
- Android ContentProvider(内容提供者 )+ContentResolver(内容访问者)
- ContentProvider(内容提供者)与ContentResolver(内容访问者)
- ContentProvider内容提供者和ContentResolver内容访问者
- Android:内容提供者(ContentProvider)和内容访问者(ContentResolver)
- ContentProvider内容提供者与ContentResolver内容访问者
- 使用内容提供者ContentProvider与内容访问者ContentResolver实现拿到另外一个项目的数据库数据
- android的与ContentResolver(内容访问者)对ContentProvider(内容提供者)的增删查改
- ContentProvider内容提供者与ContentResolver内容访问者(二)
- Android 中ContentProvider内容提供者和ContentResolver内容访问者
- ContentProvider内容提供者和ContentResolver内容访问者
- ContentProvider内容提供者和ContentResolver内容访问者
- Android----ContentProvider(内容提供者) ContentResolver(内容访问者)
- ContentProvider内容提供者与ContentResolver内容访问者
- 给大家简述下ContentProvider(内容提供者)与ContentResolver(内容访问者)如何使用。
- 内容提供者ContentProvider和内容解析者ContentResolver
- 内容提供者ContentProvider与内容接受者ContentResolver的使用详解
- 内容提供者ContentProvider和内容解析者ContentResolver
- ContentProvider内容提供者 和 ContentResolver内容访问者
- Android ContentProvinder(内容提供者) ContentResolver(内容访问者)的简单应用
- ContentProvider(内容提供者)和ContentResolve(内容访问者)