在Android 中如果想想要在应用间通信,我们可以使用隐式Intent,BroadcastReceiver,AIDL,ContentProvider。
在MainActivity中写入数据
运行结果:
ContentProvider 是应用程序之间共享数据的接口。使用的时候首先自定义一个类继承ContentProvider,然后覆写query、insert、update、delete 等方法。ContentProvider 是四大组件之一,我们还需要在AndroidManifest 文件中进行注册。
我们先建一个项目用于写入数据,在该项目中定义一个继承ContentProvider的类Myprovider,并在AndroidManifest 中注册:
<provider
android:authorities="com.zhang.mycp"
android:name="Myprovider"
android:exported="true" />
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();
}
运行结果: