`

android内容提供者

阅读更多

内容提供者:

必须在清单文件中注册,不需要手动执行,通过内容解决者匹配对应的uri调用对应内容提供者中的增删改查方法,在内容提供者中,事先利用匹配器,匹配一些uri,只有这些uri才能操作该内容提供者。

1、在清单文件中注册

<provider android:name="com.lmj.lianxiren02.MyContentProvider"

android:authorities="com.lmj.lianxiren02.MyContentProvider" 

android:exported="true"/>

Authorities:主机名,也就是访问这个内容提供者的地址。

2、继承ContentPrivoder

Public class MyContentProvider extends ContentProvider 

3、定义匹配器

// 如果没有匹配到就返回-1

static UriMatcher matcher = new UriMatcher(-1);

static String authority = "com.lmj.lianxiren02.MyContentProvider";

 

static int INSERT_CODE = 1;

static int Del_CODE = 2;

static int Up_CODE = 3;

static int Sel_CODE=4;

private MySqliteHelper helper;

// 在匹配器中,定义一些能匹配到的uri

static {

// friend表中插入一条数据的uri

// content://com.lmj.lianxiren02.MyContentProvider/friend

matcher.addURI(authority, "friend", INSERT_CODE);

// 匹配删除操作的uri

matcher.addURI(authority, "friend_delete", Del_CODE);

// 匹配更新的操作的uri

matcher.addURI(authority, "friend_update", Up_CODE);

// 匹配查询的uri

matcher.addURI(authority, "friend_select", Sel_CODE);

 

}

4、覆写oncreate方法,第一次创建内容提供者的时候得到helper对象,利用helper来操作数据库。

@Override

public boolean onCreate() {

// 第一次创建内容提供者的时候,得到helper对象

// 第一个参数上下文,四大组件都可以得到上下文

 

helper = new MySqliteHelper(this.getContext(), "tongxunlu.db", null, 1);

 

return true;

}

5、覆写增删改查数据库的方法

@Override

public Uri insert(Uri uri, ContentValues values) {

 

// 判断uri是否符合规范,如果返回的不是1,说明uri不正确

if (matcher.match(uri) != 1) {

 

throw new IllegalArgumentException("uri不合法" + uri);

 

} else {

SQLiteDatabase sdb = helper.getWritableDatabase();

if (sdb == null) {

throw new IllegalArgumentException("无法插入");

} else {

// 返回插入的这条数据,在数据库中的id

Long id = sdb.insert("friend", "_id", values);

sdb.close();

uri = ContentUris.withAppendedId(uri, id);

// 将这个uri返回给调用者

// com.lmj.lianxiren02.MyContentProvider/friend/id

 

//参数2一般设置为null

//给所有注册了内容观察者的resolver发送一个提醒

this.getContext().getContentResolver().notifyChange(uri, null);

return uri;

 

}

}

 

}

6、调用内容提供者的增删改查方法

内容解决者:

ContentResolver resolver=this.getContentResolver();

resolver.insert(uri, values);

内容解决者调用insert会调用它指定uri对应的内容提供者的insert方法,内容提供者的insert方法执行插入数据库的操作。

 

 

 

<!--EndFragment-->
2
0
分享到:
评论

相关推荐

    android 内容提供者

    【Android 内容提供者详解】 在Android操作系统中,内容提供者(Content Provider)是四大组件之一,它扮演着数据共享的关键角色。内容提供者允许应用程序之间共享和访问数据,即使这些数据存储在私有数据库、文件...

    Android内容提供者(Content provider)

    在Android系统中,内容提供者(Content Provider)是四大组件之一,它负责在应用程序之间共享数据。内容提供者是一个接口,使得其他应用可以访问存储在特定应用中的私有数据,甚至是系统级别的数据。通过实现内容...

    Android 内容提供者、解释者和观察者小例

    在Android开发中,内容提供者(Content Provider)是Android系统中的四大组件之一,它负责管理应用程序间的数据共享。内容提供者让应用的数据可以被其他应用访问,实现了数据的跨应用共享。在这里,我们将深入探讨...

    Android项目实战--手机卫士26--内容提供者与内容观察者

    在Android开发中,内容提供者(Content Provider)和内容观察者(Content Observer)是两个非常重要的组件,它们在数据共享和实时数据更新方面扮演着关键角色。本篇将深入探讨这两个概念及其在“手机卫士”这样的...

    使用android通讯录中的内容提供者实例

    在Android系统中,内容提供者(Content Provider)是Android应用程序之间数据共享的一种机制,它使得一个应用的数据可以被其他应用访问。在这个实例中,我们将深入探讨如何使用Android通讯录的内容提供者来查询和...

    Android通过内容提供者读取联系人

    在Android系统中,内容提供者(Content Provider)是Android四大组件之一,它是应用程序间数据共享的主要机制。通过内容提供者,一个应用可以将自己的数据暴露给其他应用,同时也能够访问其他应用公开的数据。在这个...

    Android内容提供者ContentProvider用法实例分析

    本文实例讲述了Android内容提供者ContentProvider用法。分享给大家供大家参考,具体如下: PersonContentProvider内容提供者类 package com.ljq.db; import android.content.ContentProvider; import android....

    android内容提供者获取通讯录短信

    在Android系统中,内容提供者(Content Provider)是应用程序间数据共享的核心机制。它使得一个应用的数据可以被其他应用访问,比如系统自带的联系人应用和短信应用就是通过内容提供者来实现数据共享的。本篇文章将...

    第5章--Android的内容提供者和意图.pptx

    Android内容提供者和意图 本章节主要介绍了Android中的内容提供者(Content Provider)和意图(Intent)。内容提供者是一个允许不同应用程序之间共享数据的机制,而意图则是Android系统中的一种 Nachrichten ...

    android之内容提供者解析

    在Android系统中,内容提供者(Content Provider)是应用程序间数据共享的重要机制。它允许一个应用将自己的数据结构公开,让其他应用可以访问和操作这些数据,就像操作SQLite数据库一样。这篇博客“android之内容...

    Andriod内容提供者编程实例

    Android内容提供者(Content Provider)是Android系统中的一个重要组件,它是不同应用程序之间共享数据的主要机制。这个编程实例将深入解析如何在Android平台上开发内容提供者,帮助开发者理解其工作原理和实现步骤...

    内容提供者实践

    在Android系统中,内容提供者(Content Provider)是应用程序间数据共享的重要机制。它遵循了Android的四大组件(Activity、Service、Broadcast Receiver、Content Provider)之一的架构,使得不同的应用可以安全地...

    Android-chapter06内容提供者.ppt

    【Android内容提供者详解】 内容提供者(ContentProvider)是Android系统四大组件(Activity、Service、BroadcastReceiver、ContentProvider)之一,主要负责保存和检索数据,实现不同应用程序间的数据共享。它提供...

    android的内容提供者

    在Android系统中,内容提供者(Content Provider)是四大组件之一,它扮演着数据共享与交换的关键角色。通过ContentProvider,应用程序可以将自己的私有数据暴露给其他应用访问,或者访问其他应用的数据,实现不同...

    自定义内容提供者和调用系统联系人

    在Android开发中,内容提供者(Content Provider)是Android四大组件之一,它是应用程序间数据共享的重要机制。通过自定义内容提供者,开发者可以将自己的数据结构公开给其他应用,实现跨应用的数据交换。本主题将...

    简易的记事本android专业课程设计.doc

    Android 内容提供者是指 Android 应用程序中提供数据的组件,可以提供数据给其他应用程序使用。 Android 内容提供者包括 SQLite 数据库、Shared Preference 等。 9. Android UI 组件 Android UI 组件是指 Android ...

    Android便签

    【Android便签】是一款基于Android平台的小型应用程序,它展示了如何有效地利用ListView、内容提供者(Content Provider)以及SQLite数据库来实现一个功能简单的记事本应用。在这个应用中,用户可以创建、编辑和删除...

    Android快速入门2010-10-1.doc

    3. 应用程序框架:提供了视图、内容提供者、资源管理器、通知管理器和活动管理器等功能,支持应用程序的构建和交互。 4. 应用程序:所有应用程序都是用Java语言编写的,系统预装了一些如邮件客户端、短信程序、日历...

Global site tag (gtag.js) - Google Analytics