(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和不改变用户 ...
随机推荐
- Android 通过HTTPCLINET POST请求互联网数据
private EditText et; private TextView tv; HttpClient client; @Override protected void onCreate(Bundl ...
- C#学习日志 day 5 plus------ interface 数组及stringBuilder相关
interface 接口interface可以理解为两个程序达成的协议. 实际就是一个留给后续开发的框架.若想继承这个interface,就必须实现interface规定的 函数及结构等.一般会以大写 ...
- JAVA之Exchanger
如果两个线程在运行过程中需要交换彼此的信息,比如一个数据或者使用的空间,就需要用到Exchanger这个类,Exchanger为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步点,只 ...
- 1.5 外部销售自动创建为内部PR
1.5 外部销售自动创建为内部PR 1.5.1 业务方案描述 外部销售订单登记后,在销售订单录入界面点击一个创建内部申请按钮,自动将外部销售订单创建为内部申请,创建后将不得再次创 ...
- TFS Build Definition
1. TFS Build 简介 在团队项目开发中,编译常常是一个很困难的事情! 可能你会反问编译有什么难的?不就是右键,然后点击 Build/Rebuild, 或者直接按 F5 么?这都不会,真不知 ...
- android中onStartActivityForResult无返回值问题
在activity间跳转传递参数,常见方法是通过onStartActivityForResult来做.不过今天使用 onStartActivityForResult的时候已经在上一个activity调 ...
- Ubuntu 12.04 Android2.2源码make** /classes-full-debug.jar Error 41错误解决
出现make: *** [out/target/common/obj/APPS/CMParts_intermediates/classes-full-debug.jar] Error 41这样的错误最 ...
- 你会用shuffle打乱列表吗?
在网站上我们经常会看到关键字云(Word Cloud)和标签云(Tag Cloud),用于表明这个关键字或标签是经常被查阅的,而且还可以看到这些标签的动态运动,每次刷新都会有不一样的关键字或便签,让浏 ...
- python entry points 例子
pbr的介绍不多,http://ju.outofmemory.cn/entry/156745 $ mkdir entry_test; cd entry_test; git init $ mkdir ...
- HTML5阴影与渐变
一.阴影 阴影的效果,阴影有四个状态值控制,分别是shadowBlur,shadowOffsetX,shadowOffsetY和shadowColor.shadowBlur为阴影的像素模糊值,shad ...