`
javacode23
  • 浏览: 29287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何创建自己的contentprovider

阅读更多
如何创建自己的contentprovider

作为ANDROIDL四大组件(Compenent:Activity, Service, BreadcaseReceiver,
ContentProvider)之一的Content provider,为其它应用程序(也可以是提供该
Content provider的应用程序)提供了一个接口一致数据储存模型。通过该接口,你可以
方便地提取你想要的数据,修改或者是删除都会变得相当方便。依照ANDROI组件模型的原理,
把数据储存与数据显示分离天来,这不但提高了组件重用性,也同时提供更高的完全性(每一
个Content Provider都有自己的许可属性)。作为数据储存的后端,你可以使用有Sqlite3
保存数据,也可以使用文件系统保存,甚至是使用网络;后端的多样性给得程序的设计更富有
弹性。
    今天结合自己开发的经验,总结一下实现Content Provider的几点经验,不足之处,欢迎
讨论(bangbang.song@gmail.com)


每一个实现都在从ContentProvider类继承,并实现ContentProvider的抽象函数:
delete(), insert(), query(), update(), getType()和onCreate().

代码片断: class myContentProvider extends ContentProvider {

        //删除符合指定条件的记录

        public int delete(Uri uri, String selection, String[] selectionArgs);

        //插入一个新的记录

        public Uri insert(Uri uri, ContentValues values);

        // 查询符合指定条件的记录

        public Cursor query(Uri uri, String[] projecttion, String selection, String[] selectionArgs, String sortOrder);

        //更新条例指定条件的记录

        public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);

        //基于给定uri,返回该uri表示的类型

        public String getType(Uri uri);

        //创建数据储存后端,如数据库,文件,网络接口等

        public boolean onCreate();



        ......


复制代码如果使用Sqlite3作为数据后端(本例只讨论这种情况,如使用其它方法,如文件系统,网络,则大同小异),数据库的创建,
打开,更新,可以使用帮助类SQLiteHelper来完成,该类将对数据库的操作作了有效的封装,有利于我们使用。
代码片断: class youtDbHelper extends SQLiteHelper {

    // 创建数据库

    public void onCreate(SQLiteDatabase db);

    // 更新数据库

    public void onUpdate(SQLiteDatabase db, int oldVersion, int newVersion)

   

    ......

}
复制代码为方便其它应用程序与该ContentProvider通信,通常我们要提供一个公共的Uri: CONTENT_URI,其它组件正是通过这一Uri,
与ContentProvider交流。在我们的ContentProvider创建好之后,我们不直接与之打交道,而是通过ANDROID的
ContentResolver进行操作。通过ANDROID系统的自动分析,会选择一个合适的ContentProvider进行通信。只要我们指定
我们之前定义的CONTENT_URI,就可能与之勾通了。
代码片断:         Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);        

    //或者

    Cursor cursor = manageQuery(uri, null, null, null, null);

    // 可以使用游标cursor获取想要的信息

    ...

    // 删除

    int count = getContentResolver().delete(Uri url, String where, String[] selectionArgs);

   ......
复制代码
对Uri的说明:
   Uri(unified Resource identifier)就是统一资源标识,指定了一个特定的资源,遵照RFC2396规范。
   一般格式为:
     <scheme>://<authority><path><query>#<fragment>
  例如: content://your.contentprovider/what_u_provided
    其中scheme=content 表示专为ContentProvider使用。
分享到:
评论

相关推荐

    android 创建数据库contentprovider

    三、创建ContentProvider 1. 创建一个继承自`ContentProvider`的类,如`MyContentProvider`。在这个类中,需要实现`query()`, `insert()`, `update()`, `delete()`和`getType()`方法,它们分别对应于对数据的查询、...

    ContentProvider多表创建

    总结,创建一个支持多表的ContentProvider,需要设计好数据库结构,实现SQLiteOpenHelper子类,注册ContentProvider,定义URI模式,并在ContentProvider中处理多表的CRUD操作。同时,利用ContentResolver进行数据...

    ContentProvider的创建与访问 android

    1. **作用**:ContentProvider允许应用程序将自己的数据结构化,然后通过URI(统一资源标识符)对外提供服务,其他应用通过标准的查询、插入、更新和删除操作来访问这些数据。 2. **结构**:一个ContentProvider由...

    Android+Room+ContentProvider

    创建ContentProvider涉及以下几个主要步骤: 1. 创建一个继承自`ContentProvider`的类。 2. 在这个类中重写`onCreate()`方法,初始化必要的资源。 3. 实现`query()`、`insert()`、`update()`、`delete()`等方法,...

    ContentProvider使用方法demo

    2. **创建ContentProvider类**:继承`ContentProvider`抽象类并实现其必要的方法,如`onCreate()`、`query()`、`insert()`、`update()`和`delete()`。这些方法对应对数据的基本操作。 3. **数据库操作**:通常,...

    android 用ContentProvider操作文件

    2. 创建ContentProvider:要创建一个ContentProvider,你需要继承`android.content.ContentProvider`类,并重写其中的关键方法,如`query()`, `insert()`, `update()`, `delete()` 和 `getType()`。 3. 注册...

    ContentProvider

    创建ContentProvider主要包括以下几个步骤: 1. **定义UriMatcher**:UriMatcher是一个辅助类,用于匹配不同的Uri请求。我们需要为每种可能的Uri添加一个匹配规则,并分配一个唯一的ID。 2. **实现ContentProvider...

    android基础总结篇之八:创建及调用自己的ContentProvider

    今天我们来讲解一下如何创建及调用自己的ContentProvider。 在前面两篇文章中我们分别讲了如何读写联系人和短消息,相信大家对于ContentProvider的操作方法已经有了一定程度的了解。在有些场合,除了操作...

    androdi ContentProvider和Uri详解

    在实际开发中,创建自定义ContentProvider时,我们需要在AndroidManifest.xml中声明ContentProvider,并提供对应的Uri。例如,如果我们有一个处理学生信息的ContentProvider,我们可以声明如下的Uri:“content://...

    contentProvider监听的例子

    总结来说,ContentProvider监听的例子主要涉及了如何创建ContentProvider、在AndroidManifest.xml中声明Provider、使用ContentObserver监听数据变化以及如何处理这些变化。这在多应用间共享数据或实现数据监听的场景...

    android contentprovider使用示例

    创建ContentProvider需要继承`android.content.ContentProvider`类,并重写其中的关键方法,如`onCreate()`, `query()`, `insert()`, `update()`, `delete()`和`getType()`。在AndroidManifest.xml中声明...

    ContentProvider 翻译

    了解了基本原理后,我们可以通过一个简单的例子来实践创建ContentProvider。假设我们要创建一个存储学生信息的ContentProvider,首先定义Uri,如`content://com.example.provider/students`,然后创建名为`...

    contentprovider

    1. **创建ContentProvider类**:首先,你需要继承`android.content.ContentProvider`类,并重写其中的关键方法,如`onCreate()`、`query()`、`insert()`、`update()`和`delete()`等。这些方法分别对应对数据进行查询...

    Android 之 自定义ContentProvider的使用

    2. **创建ContentProvider** 要创建自定义ContentProvider,首先需要创建一个新的Java类,继承自`android.content.ContentProvider`。在这个类中,需要重写以下几个关键方法: - `onCreate()`: 初始化方法,通常...

    ContentProvider的使用Demo

    首先,创建ContentProvider需要继承自Android的`ContentProvider`类,并重写其关键方法: 1. `onCreate()`: 当ContentProvider被系统启动时调用,通常在这里进行初始化操作。 2. `query(Uri uri, String[] ...

    ContentProvider项目

    三、创建ContentProvider 1. 创建一个继承自ContentProvider的子类,并重写onCreate、query、insert、update、delete等方法。 2. 在AndroidManifest.xml中注册ContentProvider,指定权限、Authority和对应的...

    ContentProvider自定义以及使用系统ContentProvider

    1. **创建Provider类**:继承自Android的`android.content.ContentProvider`类,并重写其中的关键方法,如`onCreate()`、`query()`、`insert()`、`update()`、`delete()`等。`onCreate()`方法在ContentProvider启动...

    Android ContentProvider全面解析

    创建ContentProvider需要实现以下几个关键方法: 1. onCreate():初始化方法,当ContentProvider被首次访问时调用。 2. query():处理数据查询请求,返回Cursor对象。 3. insert():插入新数据,返回新创建的Uri。 4...

    Android中ContentProvider的示例

    2. **创建ContentProvider子类**: 需要创建一个继承自ContentProvider的类,实现其关键方法,如query(), insert(), update(), delete()和getType()。这些方法对应于对数据的操作。例如,query()方法用于执行查询操作...

Global site tag (gtag.js) - Google Analytics