`
kaozjlin
  • 浏览: 117478 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

Android开发——数据存储之ContentProvider(2)

阅读更多

----------------接上文---------------------

2、创建自定义ContentProvider
创建内容供应器,需要继承ContentProvider
 
示例代码三:
1: 

2: /**

3: * 内容提供者

4: * @author LeoYang

5: */

6: public class TodoListProvider extends ContentProvider {

7: 

8: private static final String TAG = TodoListProvider.class.getSimpleName();

9: 

10: //数据库名

11: private static final String DATABASE_NAME = "todolist.db";

12: //版本

13: private static final int DATABASE_VERSION = 1;

14: //表名

15: private static final String TABLE_NAME = "todos";

16: //属性表

17: private static HashMap<String, String> sTodosProjectionMap;

18: 

19: private static final int TODOS = 1;

20: private static final int TODO_ID = 2;

21: 

22: //uri匹配器

23: private static final UriMatcher uriMatcher;

24: 

25: private DataBaseHelper dataBaseHelper;

26: 

27: static {

28: //数据初始化

29: uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

30: uriMatcher.addURI(TodoList.AUTHORITY, "todos", TODOS);

31: uriMatcher.addURI(TodoList.AUTHORITY, "todos/#", TODO_ID);

32: 

33: sTodosProjectionMap = new HashMap<String, String>();

34: sTodosProjectionMap.put(Todo._ID, Todo._ID);

35: sTodosProjectionMap.put(Todo.TITLE, Todo.TITLE);

36: sTodosProjectionMap.put(Todo.CONTENT, Todo.CONTENT);

37: sTodosProjectionMap.put(Todo.CREATED_DATE, Todo.CREATED_DATE);

38: sTodosProjectionMap.put(Todo.MODIFIED_DATE, Todo.MODIFIED_DATE);

39: }

40: 

41: private static class DataBaseHelper extends SQLiteOpenHelper {

42: 

43: public DataBaseHelper(Context context) {

44: super(context, DATABASE_NAME, null, DATABASE_VERSION);

45: }

46: 

47: //创建表

48: @Override

49: public void onCreate(SQLiteDatabase db) {

50: Log.d(TAG, "create table :" + TABLE_NAME);

51: db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + "(" + Todo._ID + " INTEGER PRIMARY KEY," + Todo.TITLE

52: + " TEXT," + Todo.CONTENT + " TEXT," + Todo.CREATED_DATE + " INTEGER," + Todo.MODIFIED_DATE

53: + " INTEGER)");

54: ContentValues values = new ContentValues();

55: values.put(Todo.TITLE, "test");

56: values.put(Todo.CONTENT, "dddddddd");

57: db.insert(TABLE_NAME, "title", values);

58: }

59: 

60: //更新数据库表

61: @Override

62: public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

63: Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion

64: + ", which will destroy all old data");

65: db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);

66: onCreate(db);

67: }

68: 

69: }

70: 

71: //删除数据操作

72: @Override

73: public int delete(Uri uri, String selection, String[] selectionArgs) {

74: SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

75: int count = 0;

76: //判断uri类型

77: switch (uriMatcher.match(uri)) {

78: case TODOS:

79: //如果以"/todo"结尾,则删除整个表数据

80: count = db.delete(TABLE_NAME, selection, selectionArgs);

81: break;

82: case TODO_ID:

83: //如果以“/todo/1”结尾,则删除ID=1的数据

84: String todoId = uri.getPathSegments().get(1);

85: count = db.delete(TABLE_NAME, Todo._ID + "=" + todoId

86: + ((TextUtils.isEmpty(selection)) ? "" : " AND " + selection), selectionArgs);

87: break;

88: default:

89: throw new IllegalArgumentException("Unknown URI :" + uri);

90: }

91: getContext().getContentResolver().notifyChange(uri, null);

92: return count;

93: }

94: ......

95: ......

96: //其他方法省略

至此我们就创建了一个ContentProvider了

3、Provider的配置,在AndroidMainfest.xml配置

示例代码三:

1: <?xml version="1.0" encoding="utf-8"?>

2: <manifest xmlns:android="http://schemas.android.com/apk/res/android"

3: package="com.halzhang.android.provider" android:versionCode="1"

4: android:versionName="1.0">

5: <application android:icon="@drawable/icon" android:label="@string/app_name">

6: <!-- 

7: name属性为继承ContentProvider的类

8: authorities属性为属性对象路径

9: -->

10: <provider android:name=".TodoListProvider"

11: android:authorities="com.halzhang.android.provider.TodoList"></provider>

12: <activity android:name=".ContentProviderDemo" android:label="@string/app_name">

 

OK,至此我们就创建了一个ContentProvider了

分享到:
评论

相关推荐

    Android源码——数据库SQLite.zip

    总的来说,"Android源码——数据库SQLite.zip"的内容涵盖了SQLite在Android中的使用、数据库的创建与管理、SQL操作、事务处理、性能优化等方面的知识,对于深入理解Android应用的数据存储机制具有很高的学习价值。

    安卓Android源码——数据口袋.zip

    "安卓Android源码——数据口袋.zip"可能包含的是一个关于数据管理或存储的开源项目,旨在帮助开发者更好地理解和处理Android设备上的数据。这个压缩包很可能是某个开发者的个人实践、教程或者是针对Android平台的...

    解析Google Android SDK——智能手机开发范例手册-下载代码

    《解析Google Android SDK——智能手机开发范例手册》是一本深入探讨Android应用开发的书籍,它提供了丰富的实例,帮助开发者理解并掌握Android SDK的各种工具和技术。本文将基于书中的章节命名,如c3、c12等,来...

    Android开发——文件存储

    在Android开发中,文件存储是应用保存数据的一种常见方式,尤其适用于小规模、非结构化的数据,例如日程安排应用中的活动记录。本教程将详细讲解如何实现一个基于文件存储的日程安排应用。 首先,我们需要了解...

    安卓Android源码——数据的储存与读取.zip

    本资料包"安卓Android源码——数据的储存与读取.zip"可能包含了一些关于如何在Android平台上存储和检索数据的示例代码和讲解,这将帮助开发者更好地理解这一核心概念。 在Android中,有多种数据存储方式,每种都有...

    Android开发——从小工到专家(书签)

    ContentProvider用于在不同应用间共享数据,是Android四大组件之一。掌握如何创建和使用ContentProvider,能够实现跨应用的数据交换。 八、碎片(Fragment) Fragment是用于构建可重用的UI模块,尤其在多屏幕适配中...

    mars—第一季android——contentProvider

    在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的重要角色。本教程“mars—第一季android——contentProvider”聚焦于如何利用ContentProvider来实现不同应用程序之间的数据...

    安卓Android源码——android相册系统(用Matrix实现).zip

    7. **ContentProvider**: 在Android中,ContentProvider是数据共享的接口,相册应用可以通过ContentProvider来提供对图片的访问权限,其他应用可以通过Uri查询和操作这些图片。 8. **异步处理**: 图片加载和处理...

    安卓Android源码——精典源码之便签软件.zip

    【标题】: "安卓Android源码——精典源码之便签软件.zip" 提供的是一份关于Android平台上的便签应用的源代码。这个源码可以作为一个学习Android开发、理解应用程序架构以及深入探究Android UI设计和数据持久化机制的...

    安卓Android源码——精典源码之企信通EIM.zip

    4. **ContentProvider**:如果EIM涉及到数据存储和共享,ContentProvider是Android中统一数据访问的接口,可以用来与其他应用共享数据。 5. **Intent和IntentFilter**:Intent用于启动活动、服务或广播接收器,...

    安卓Android源码——应用开发揭秘源码.zip

    《安卓Android源码——应用开发揭秘》是一本深入解析Android应用开发背后原理和技术的书籍,其源码对应压缩包提供了丰富的实践案例和详细注解,是开发者深入理解Android系统及应用开发的重要参考资料。通过分析这些...

    Android源码——备忘录源码.zip

    这份“Android源码——备忘录源码.zip”压缩包很可能包含了一个完整的备忘录应用的源代码,对于学习Android开发,特别是对UI设计、数据存储和事件处理感兴趣的开发者来说,是一个宝贵的资源。下面我们将详细探讨这个...

    安卓Android源码——通讯录的开发_完整代码.zip

    本资源"安卓Android源码——通讯录的开发_完整代码.zip"提供了一个完整的通讯录应用开发案例,可以帮助开发者深入理解Android系统中关于联系人管理的底层机制以及UI设计的实践技巧。 1. **Android源码分析** - **...

    Android源码——小米系统之便签源码.zip

    在"Android源码——小米系统之便签源码.zip"这个压缩包中,我们可能找到的是小米便签应用的源代码,这对于我们理解Android应用开发,特别是针对特定厂商定制系统的开发有着重要价值。通过分析这些源码,我们可以学习...

    安卓Android源码——精典源码之公交查询.zip

    《安卓Android源码——经典源码之公交查询》 在移动开发领域,Android操作系统占据了重要的地位,而深入理解Android源码对于开发者来说是提升技能的关键步骤。本压缩包中的源码是一个公交查询应用,旨在帮助用户...

    Android源码——WordPress for Android.zip

    2. 数据存储:为了提高用户体验,应用通常会将部分数据缓存在本地。Android提供了SQLite数据库和SharedPreferences等本地存储机制。在WordPress for Android中,我们可能会发现如何使用ContentProvider进行数据操作...

    安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码.rar

    本资料包围绕“安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码.rar”展开,提供了豆瓣移动客户端的源码和相关讲解,旨在帮助开发者了解并掌握Android应用的开发流程和技巧。 一、Android...

    安卓Android源码——Contacts.rar

    《安卓Android源码——Contacts详解》 在深入探讨安卓Android源码中的Contacts部分之前,我们需要先理解Contacts在安卓系统中的重要地位。Contacts是用户管理个人联系人信息的主要应用,它负责存储、显示和操作联系...

    安卓Android源码——Gallery2.rar

    ContentProvider是Android四大组件之一,负责数据的存储和共享。通过查询MediaStore的内容提供者,Gallery2可以获取到设备上的所有图片信息,包括路径、尺寸、时间等。这部分源码展示了如何进行数据查询和解析,对于...

Global site tag (gtag.js) - Google Analytics