在Android 中如果想想要在应用间通信,我们可以使用隐式Intent,BroadcastReceiver,AIDL,ContentProvider。

ContentProvider 是应用程序之间共享数据的接口。使用的时候首先自定义一个类继承ContentProvider,然后覆写query、insert、update、delete 等方法。ContentProvider 是四大组件之一,我们还需要在AndroidManifest 文件中进行注册。

我们先建一个项目用于写入数据,在该项目中定义一个继承ContentProvider的类Myprovider,并在AndroidManifest 中注册

    

public class Myprovider extends ContentProvider {    public static final Uri URI = Uri.parse("content://com.zhang.mycp");    SQLiteDatabase database;    @Override    public boolean onCreate() {        database = getContext().openOrCreateDatabase("mycp.db3", Context.MODE_PRIVATE, null);        database.execSQL("create table tab(_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL)");        return true;    }    @Nullable    @Override    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {        Cursor cursor = database.query("tab",null,null,null,null,null,null);        return cursor;    }    @Nullable    @Override    public String getType(Uri uri) {        return null;    }    @Nullable    @Override    public Uri insert(Uri uri, ContentValues values) {        database.insert("tab","_id",values);         return null;    }    @Override    public int delete(Uri uri, String selection, String[] selectionArgs) {        return 0;    }    @Override    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {        return 0;    }}

在MainActivity中写入数据

ContentValues values = new ContentValues();        values.put("name","Java");        getContentResolver().insert(Myprovider.URI,values);        values.put("name","Swift");        getContentResolver().insert(Myprovider.URI,values);        values.put("name","Python");        getContentResolver().insert(Myprovider.URI,values);        values.put("name","C#");        getContentResolver().insert(Myprovider.URI,values);


创建另一个项目用来演示读取数据

     Uri URI = Uri.parse("content://com.zhang.mycp");        Cursor cursor = getContentResolver().query(URI, null, null, null, null);        if (cursor != null) {            while (cursor.moveToNext()) {                String value = cursor.getString(cursor.getColumnIndex("name"));                System.out.println(value + ">>>>>>>>>>>>>>>>>>>>");            }            cursor.close();        }

运行结果:



更多相关文章

  1. android之从Bmob获取数据显示在ListView中
  2. ContentProvider和Uri详解
  3. Android提供了5种方式存储数据:
  4. Android(安卓)媒体库数据更新
  5. 整理的使用sharedPreferences
  6. Android一次刷机
  7. Android(安卓)Rom签名文件的生成与签名
  8. 【Android】数据存储之Shared Preferences
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. monodroid开发之--call Hanlder
  2. 关于Android(安卓)Settings中的八个问题
  3. android: Can't create handler inside t
  4. 共享打印机频繁脱机的解决办法
  5. Android(安卓)vector 标签
  6. Android(安卓)studio上面学习Aidl实现复
  7. Android初级教程获取手机系统联系人信息
  8. Android(安卓)自定义实现switch开关按钮
  9. Android(安卓)Studio 引用jar和so 文件
  10. mldn andoird