(Android) ContentProvider 实例
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-------------
(Android) ContentProvider 实例的更多相关文章
- Android基础 : Android ContentProvider
Android 应用程序通过ContentProvider实现方式统一的数据共享功能. 外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activi ...
- Android ContentProvider 启动分析
对于 ContentProvider 还不是很熟悉的同学,可以阅读上一篇 Android ContentProvider 基本原理和使用详解.本文主要是对 contentProvider 的源码进行分 ...
- Android HTTP实例 使用GET方法和POST方法发送请求
Android HTTP实例 使用GET方法和POST方法发送请求 Web程序:使用GET和POST方法发送请求 首先利用MyEclispe+Tomcat写好一个Web程序,实现的功能就是提交用户信息 ...
- Android HTTP实例 发送请求和接收响应
Android HTTP实例 发送请求和接收响应 Android Http连接 实例:发送请求和接收响应 添加权限 首先要在manifest中加上访问网络的权限: <manifest ... & ...
- Android图像处理实例教程
Android图像处理实例教程 原始出处 http://vaero.blog.51cto.com/4350852/856750
- 一个简单的Android小实例
原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台 3.安装J ...
- Android ContentProvider完整案例
ContentData类,提供数据常量: /** * 提供ContentProvider对外的各种常量,当外部数据需要访问的时候,就可以参考这些常量操作数据. * @author HB * */ pu ...
- android本地数据库,微信数据库WCDB for Android 使用实例
android本地数据库,微信数据库WCDB for Android 使用实例 Home · Tencent/wcdb Wikihttps://github.com/Tencent/wcdb/wiki ...
- 【转】 Android常用实例—Alert Dialog的使用
Android常用实例—Alert Dialog的使用 AlertDialog的使用很普遍,在应用中当你想要用户做出“是”或“否”或者其它各式各样的选择时,为了保持在同样的Activity和不改变用户 ...
随机推荐
- hadoop笔记之Hive的数据存储(视图)
Hive的数据存储(视图) Hive的数据存储(视图) 视图(view) 视图是一种虚表,是一个逻辑概念:可以跨越多张表 既然视图是一种虚表,那么也就是说用操作表的方式也可以操作视图 但是视图是建立在 ...
- 转 ——eclipse下进行Python开发 环境配置
python for eclipse插件安装1.下载python for eclipsepython for eclipse下载地址,如:org.python.pydev.feature-1.6.3. ...
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...
- oracle查看所有表及字段
oracle表设计 http://blog.csdn.net/lanpy88/article/details/7580820 Oracle查看所有表和字段 获取表: select table_name ...
- js笔记-DOM基础
DoM 浏览器支持: IE: 10% FF: 99% Chrome: 60% childNotes不兼容 在Chrome和IE9中会将文本节点也算作childNotes,而在IE6-8中childNo ...
- python <tab>自动补全
1.获取python目录[我使用的是64位ubuntu系统] [~$]python Python 2.7.3 (default, Apr 10 2013, 06:20:15) [GCC 4.6.3] ...
- 初探swift语言的学习笔记(闭包-匿名函数或block块代码)
使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButto ...
- 关于消息推送和service的一些调查-清理内存通知栏点击无响应
起因:做了两个带推送的app:HiApp和WeApp,前者个推,后者百度推送,但前者有一个小缺陷. 现象:两部手机 1.htcD820t手机,运行中的app利用自带的关闭最近程序后,通知栏不清理该ap ...
- win7(32 bit) 环境下点击打印预览报错解决办法
如题,报错截图如下 : 解决办法如下: 1.关闭系统数据执行保护.具体操作: 在win7 系统命令行中执行如下命令: bcdedit.exe /set {current} nx Alw ...
- Javascript获取浏览器版本
前两天有朋友请教我这个问题,说现在网上的资料太过于混乱不完整,我这里先简单整理一部分. 0 (function(){ 1 2 var ver = window.navigator.userAgen ...