Android--ContentProvider跨程序访问数据
来源:互联网 发布:c语言strcpy函数实现 编辑:程序博客网 时间:2024/05/22 04:43
两个程序A和B,
A程序中有两个类,一个继承Activity,一个继承ContentProvider
B程序中有一个类,继承 Activity
在A程序中创建一个数据库,数据库中创建两张表,
实现B程序访问A程序数据库中的数据
A程序中继承Activity的类:创建数据库,在数据库中创建表,在表中插入数据
package cn.mrzhu.test24;import android.app.Activity;import android.content.ContentValues;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;public class Provider extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //创建数据库 SQLiteDatabase db = openOrCreateDatabase("test24.db", MODE_PRIVATE, null); //创建表 db.execSQL("create table test1 (_id integer, name varchar(20), age integer)"); db.execSQL("create table test2 (_id integer, name varchar(20), age integer)"); //给test1表添加数据 ContentValues values = new ContentValues(); values.put("name", "zhangsan"); values.put("age", 30); db.insert("test1", "name", values); values.clear(); values.put("name", "lisi"); values.put("age", 40); db.insert("test1", "name", values); //给test2表添加数据 values.clear(); values.put("name", "Peter"); values.put("age", 20); db.insert("test2", "name", values); values.clear(); values.put("name", "Mike"); values.put("age", 25); db.insert("test2", "name", values); }}
A程序中继承ContentProvider的类:需在AndroidManifest.xml中注册
<provider android:name="MyContentProvider"android:authorities="cn.mrzhu.test24"></provider>
android:authorities="cn.mrzhu.test24"为程序B访问提供uri,只有通过此uri程序B才能访问到A程序中的数据
package cn.mrzhu.test24;import android.content.ContentProvider;import android.content.ContentValues;import android.content.Context;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;public class MyContentProvider extends ContentProvider{//Uri过滤器,通过此过滤器可以取出uri最后一个字段UriMatcher um;static final String AUTHORITY = "cn.mrzhu.test24";@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {return 0;}@Overridepublic String getType(Uri uri) {// TODO Auto-generated method stubreturn null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {// TODO Auto-generated method stubreturn null;}@Overridepublic boolean onCreate() {//初始化过滤器um = new UriMatcher(UriMatcher.NO_MATCH);//添加过滤内容,从其他程序传来的uri通过过滤器之后若其字段为test1,则其code为1um.addURI(AUTHORITY, "test1", 1);um.addURI(AUTHORITY, "test2", 2);return false;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {SQLiteDatabase db = getContext().openOrCreateDatabase("test24.db", Context.MODE_PRIVATE, null);Cursor cs = null;//将uri过滤,取得返回值int code = um.match(uri);//根据不同的返回值执行不同的查询语句switch(code){case 1:cs = db.rawQuery("select * from test1", null);break;case 2:cs = db.rawQuery("select * from test2", null);break;}//执行查询语句后将结果集返回return cs;}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {// TODO Auto-generated method stubreturn 0;}}
B程序:通过A程序中继承ContentProvider的类提供的uri访问到A程序的数据
package cn.mrzhu.test24x;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.util.Log;public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得ContentResolver对象 ContentResolver cr = getContentResolver(); //指定uri并指定操作哪个表 Uri uri = Uri.parse("content://cn.mrzhu.test24/test1"); //执行query方法返回一个结果集 Cursor cs = cr.query(uri, null, null, null, null); //遍历结果集,取出数据 while(cs.moveToNext()){ Log.i("System.out", "_id" + cs.getInt(0) + "name" + cs.getString(1) + "age" + cs.getInt(2)); } }}
- Android--ContentProvider跨程序访问数据
- Android--ContentProvider跨程序访问数据
- ContentProvider跨程序数据共享
- ContentProvider将程序中的数据暴露给其他程序访问
- ContentProvider 彩信数据访问
- 第十七篇 ContentProvider之访问其他程序中的数据
- ContentProvider 跨程序间数据沟通
- Android 应用程序之间数据共享—ContentProvider 保时被访问
- android数据存储与访问之使用ContentProvider
- Android开发之数据存储与访问(5)-ContentProvider
- android数据存储与访问之使用ContentProvider
- 【读书笔记】Android访问远程数据的步骤(Messenger、AIDL、ContentProvider
- Android之ContentProvider跨程序共享数据入门(笔记一)
- Android之ContentProvider跨程序共享数据入门(笔记二)
- android 多媒体数据 ContentProvider
- Android -----数据共享ContentProvider
- Android4大组件之ContentProvider跨项目访问数据Demo
- android 数据存储和访问方式四:ContentProvider(内容提供者、数据共享)详解
- Android布局属性详解
- JAVA操作properties文件
- 需求那些事儿
- ASCII码排序 STL练手题
- Redis学习手册
- Android--ContentProvider跨程序访问数据
- c#中连接数据库后绘制柱状图和饼状图
- Red Bend与阿朗推LTE移动设备管理 使4G设备兼容OMA DM
- Android学习备忘019——AlertDialog问题
- 字对齐概念
- 表达式求值[java版本]
- __attribute__ ((aligned (n), packed))
- loading图标现在相关链接
- printf修饰符