ContentProvider 用于应用程序(Android Application)之间传递数据,包括Insert, update, delete, query。

下面的例子是在两个应用之间传递数据。

应用一(创建ContentProviderTestA)

TestContentProvider.java

public class TestContentProvider extends ContentProvider {

private final static UriMatcher URI_MATCHER;
private final static int ALL_MESSAGES = 1;
private final static int SPECIFIC_MESSAGE = 2;

static {
URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
URI_MATCHER.addURI("com.example.contentprovidertesta", "item", ALL_MESSAGES);
URI_MATCHER.addURI("com.example.contentprovidertesta", "specialitem", SPECIFIC_MESSAGE);
}

public static final Uri CONTENT_URI = Uri
.parse("content://com.example.contentprovidertesta");

private final static String DEBUG = "ContentProvider";

@Override
public String getType(Uri uri) {
switch (URI_MATCHER.match(uri)) {
case SPECIFIC_MESSAGE:
Log.d(DEBUG, "specialitem");
return "specialitem";
case ALL_MESSAGES:
Log.d(DEBUG, "item");
return "item/normal";
}
return "item";
}

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
Log.d(DEBUG, uri.toString());
if (getType(uri).equals("specialitem")) {
Log.d(DEBUG, "-----------delete sepcial items-------------");
} else {
Log.d(DEBUG, "-----------delete-------------");
}
return 0;
}

@Override
public Uri insert(Uri uri, ContentValues values) {
return null;
}

@Override
public boolean onCreate() {
return false;
}

@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return null;
}

@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return 0;
}
}

AndroidManifest.xml

<application>

<provider
android:name="com.example.contentprovidertesta.TestContentProvider"
android:authorities="com.example.contentprovidertesta" />

</application>

应用二 ContentProviderTest

public class MainActivity extends Activity {

private final Uri testallmessage = Uri
.parse("content://com.example.contentprovidertesta/item");
private final Uri testspecialmessage = Uri
.parse("content://com.example.contentprovidertesta/specialitem");

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
protected void onResume() {
super.onResume();
testContentProvider();
}

private void testContentProvider() {
getContentResolver().delete(testallmessage, null, null);
getContentResolver().delete(testspecialmessage, null, null);
}

}

当安装两个应用后,再运行应用二出现的log,

content://com.example.contentprovidertesta/item
item
-----------delete-------------
content://com.example.contentprovidertesta/specialitem
specialitem
-----------delete sepcial items-------------

更多相关文章

  1. android 利用pull解析xml数据
  2. Android:week 11总结 内容提供者、数据库
  3. 下拉菜单中自动亮度调节&P 上背光调节
  4. Android(安卓)数据库SQLite的使用简单Demo
  5. sharedUserId和签名Android权限
  6. android http请求访问接口的封装
  7. android Intent返回数据,回调数据,startActivityForResult用法
  8. android:app接收adb发送的命令并显示
  9. webview内H5与原生安卓和IOS交互(互调方法/传值)

随机推荐

  1. Sql Server 2012 分页方法分析(offset an
  2. SQL server高级应用 收藏版
  3. 优化 SQL Server 索引的小技巧
  4. SqlServer 索引自动优化工具
  5. sqlserver 查询数据库大小的方法
  6. SQL Server 数据页缓冲区的内存瓶颈分析
  7. SQL处理多级分类,查询结果呈树形结构
  8. sql 存储过程批量删除数据的语句
  9. SQL Server重温 事务
  10. SQL参数化查询的另一个理由 命中执行计划