android数据的存储方式大体上来书有四种:SharedPreferences,File,SQLite,ContentProvider
做了个ContentProvider的demo
ContentProvider翻译成中文是内容提供者,肯定有提供方和调用方。
数据提供方的实现:
流程:分为两步
(1) 编写一个类继承自ContentProvider类,会有很多方法可以实现,根据具体需求选择自己要实现的
public class MyContentProvider extends ContentProvider {
private static UriMatcher matcher;
//请求唯一标示
private static final String CONNPATH = "com.mycontentprovider";
private static final int ALL_WORD = 1;
private static final int PAGE_WORD = 2;
private static final String DATABASE_ALL = "all";
private static final String DATABASE_PAGE = "page";
private SQLiteDatabase database;
static{
//出事换UriMatcher
matcher = new UriMatcher(UriMatcher.NO_MATCH);
matcher.addURI(CONNPATH, DATABASE_ALL, ALL_WORD);
matcher.addURI(CONNPATH, DATABASE_PAGE, PAGE_WORD);
}
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getType(Uri arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public Uri insert(Uri arg0, ContentValues arg1) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean onCreate() {
//得到SqliteDatabase
database = DBHelper.getInstance().openDatabase();
return true;
}
@Override
public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
String arg4) {
Cursor cursor = null;
switch (matcher.match(arg0)) {
case ALL_WORD:
cursor = database.query("tb_test",arg1, null,null, null,null,arg4);
break;
case PAGE_WORD:
int pageCount =Integer.valueOf(arg3[0]);
Log.d("debug","var2="+pageCount);
int pageSize =Integer.valueOf(arg3[1]);
Log.d("debug","var1="+pageSize);
String sqlStr = "select id,name,sex from tb_test limit ?,?";
// 从limit 10,100 表示表示从11条记录开始的100条记录
cursor = database.rawQuery(sqlStr,
new String[] { String.valueOf((pageCount - 1) * pageSize),
String.valueOf(pageSize) });
break;
default:
break;
}
return cursor;
}
@Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
// TODO Auto-generated method stub
return 0;
}
}
(2) 在AndroidManifest.xml 中的<application>节点下添加<provider>节点,注册路径和请求uri
<provider android:name="MyContentProvider" android:authorities="com.mycontentprovider" ></provider>
调用方:
一步就可以了
Activity实例对象的getContentResolver()方法得到ContentResolver对象就可以进行增删改查了
//请求Url
String connPath = "content://com.mycontentprovider";
//与数据提供方UriMatcher 添加的tag对应
//查找所有
String all = connPath+"/all";
Cursor cursor = getContentResolver().query(Uri.parse(all), new String[]{"id","name","sex"}, null, null, "id");
由调用方可以知道,最终请求的地址是: "content://com.mycontentprovider/all";
这个请求的可以分为三部分
(1)协议:content 谷歌规定的
(2)唯一标识:com.mycontentprovider 在android系统实例中必须唯一,与数据提供方注册是的uri一致
(3)请求数据的tag,与 数据提供方的UriMatcher添加的tag一致
分享到:
相关推荐
【Android 内容提供者详解】 在Android操作系统中,内容提供者(Content Provider)是四大组件之一,它扮演着数据共享的关键角色。内容提供者允许应用程序之间共享和访问数据,即使这些数据存储在私有数据库、文件...
在Android系统中,内容提供者(Content Provider)是四大组件之一,它负责在应用程序之间共享数据。内容提供者是一个接口,使得其他应用可以访问存储在特定应用中的私有数据,甚至是系统级别的数据。通过实现内容...
在Android开发中,内容提供者(Content Provider)是Android系统中的四大组件之一,它负责管理应用程序间的数据共享。内容提供者让应用的数据可以被其他应用访问,实现了数据的跨应用共享。在这里,我们将深入探讨...
在Android开发中,内容提供者(Content Provider)和内容观察者(Content Observer)是两个非常重要的组件,它们在数据共享和实时数据更新方面扮演着关键角色。本篇将深入探讨这两个概念及其在“手机卫士”这样的...
在Android系统中,内容提供者(Content Provider)是Android应用程序之间数据共享的一种机制,它使得一个应用的数据可以被其他应用访问。在这个实例中,我们将深入探讨如何使用Android通讯录的内容提供者来查询和...
在Android系统中,内容提供者(Content Provider)是Android四大组件之一,它是应用程序间数据共享的主要机制。通过内容提供者,一个应用可以将自己的数据暴露给其他应用,同时也能够访问其他应用公开的数据。在这个...
本文实例讲述了Android内容提供者ContentProvider用法。分享给大家供大家参考,具体如下: PersonContentProvider内容提供者类 package com.ljq.db; import android.content.ContentProvider; import android....
在Android系统中,内容提供者(Content Provider)是应用程序间数据共享的核心机制。它使得一个应用的数据可以被其他应用访问,比如系统自带的联系人应用和短信应用就是通过内容提供者来实现数据共享的。本篇文章将...
Android内容提供者和意图 本章节主要介绍了Android中的内容提供者(Content Provider)和意图(Intent)。内容提供者是一个允许不同应用程序之间共享数据的机制,而意图则是Android系统中的一种 Nachrichten ...
在Android系统中,内容提供者(Content Provider)是应用程序间数据共享的重要机制。它允许一个应用将自己的数据结构公开,让其他应用可以访问和操作这些数据,就像操作SQLite数据库一样。这篇博客“android之内容...
Android内容提供者(Content Provider)是Android系统中的一个重要组件,它是不同应用程序之间共享数据的主要机制。这个编程实例将深入解析如何在Android平台上开发内容提供者,帮助开发者理解其工作原理和实现步骤...
在Android系统中,内容提供者(Content Provider)是应用程序间数据共享的重要机制。它遵循了Android的四大组件(Activity、Service、Broadcast Receiver、Content Provider)之一的架构,使得不同的应用可以安全地...
【Android内容提供者详解】 内容提供者(ContentProvider)是Android系统四大组件(Activity、Service、BroadcastReceiver、ContentProvider)之一,主要负责保存和检索数据,实现不同应用程序间的数据共享。它提供...
在Android系统中,内容提供者(Content Provider)是四大组件之一,它扮演着数据共享与交换的关键角色。通过ContentProvider,应用程序可以将自己的私有数据暴露给其他应用访问,或者访问其他应用的数据,实现不同...
在Android开发中,内容提供者(Content Provider)是Android四大组件之一,它是应用程序间数据共享的重要机制。通过自定义内容提供者,开发者可以将自己的数据结构公开给其他应用,实现跨应用的数据交换。本主题将...
Android 内容提供者是指 Android 应用程序中提供数据的组件,可以提供数据给其他应用程序使用。 Android 内容提供者包括 SQLite 数据库、Shared Preference 等。 9. Android UI 组件 Android UI 组件是指 Android ...
【Android便签】是一款基于Android平台的小型应用程序,它展示了如何有效地利用ListView、内容提供者(Content Provider)以及SQLite数据库来实现一个功能简单的记事本应用。在这个应用中,用户可以创建、编辑和删除...
3. 应用程序框架:提供了视图、内容提供者、资源管理器、通知管理器和活动管理器等功能,支持应用程序的构建和交互。 4. 应用程序:所有应用程序都是用Java语言编写的,系统预装了一些如邮件客户端、短信程序、日历...