`
kaozjlin
  • 浏览: 115308 次
  • 性别: 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开发入门与实战(下)

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    android开发入门与实战(上)

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    《Google Android开发入门与实战》.pdf

    第2章 工欲善其事 必先利其器——搭建android开发环境 7 2.1 开发android应用前的准备 7 2.1.1 android开发系统要求 7 2.1.2 android软件开发包 7 .2.1.3 其他注意事项 8 2.2 windows开发环境搭建...

    Google.Android开发入门与实战

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    Google Android开发入门与实战的代码

    第2章 工欲善其事 必先利其器——搭建Android开发环境 7 2.1 开发Android应用前的准备 7 2.1.1 Android开发系统要求 7 2.1.2 Android软件开发包 7 .2.1.3 其他注意事项 8 2.2 Windows开发环境搭建...

    android应用安全——数据安全

    数据安全包含数据库数据安全、SD卡数据(外部存储)安全、RAM数据(内部存储)安全。android中操作数据库可使用SQLiteOpenHelper或ContentProvider的方式。  数据安全包含数据库数据安全、SD卡数据(外部存储)安全、RAM...

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    2.2 简单数据的存储——preferences 33 2.2.1 preferences简介 33 2.2.2 preferences实现访问时间的记录 33 2.3 手机自带数据库——sqlite 34 2.3.1 初识sqlite 35 2.3.2 sqlite数据库的基本操作 ...

    安卓开发实验6——SQLite和SQLiteDatabase应用

    课堂作业实验6源码。利用android的内置数据库SQLite存储新闻信息,用listview组件以列表形式显示新闻内容,

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    Android应用开发详解pdf.pdf

     第2章 Android开发基础Android开发基础,讲述了Android开发环境的搭建、Android常用工具的使用和第一个Android应用程序的开发  第二篇 技术篇第3章 Android中的资源访问Android 中的资源访问,讲述了如何定义和...

    Android典型技术模块开发详解

    第一篇 Android开发初步 第1章 Android初识 1.1 Android简介 1.1.1 认识Android 1.1.2 Android系统框架 1.1.3 应用程序框架 1.2 Eclipse开发环境 1.2.1 安装ADT插件 1.2.2 安装SDK 1.2.3 配置源代码 1.2.4 创建AVD ...

    Android程序设计基础

    本书是一部关于 android开发的基础教程,采用由浅入深、循序渐进的方式讨论android。书中还结合数独游戏等实例更加形象生动地讲解了 android开发的基本流程,且每章最后都有一个 “快速阅读指南 ”,更加方便了读者...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--view中的tag用法之存储对象 |--view常用属性 |--xml常用属性 |--xml文件的pull解析与序列化写入 |--xml的封装序列化 |--任务循环之只在Activity显示时执行 |--修改文件的最后修改时间 |--偏好设置(回显) |--内存...

    Android学习之文件存储读取

    本节给大家介绍的是Android数据存储与访问方式中的一个——文件存储与读写,当然除了这种方式外,我们可以存到SharedPreference,数据库, 或者ContentProvider中,当然这些后面都会讲,嗯,开始本文内容~

Global site tag (gtag.js) - Google Analytics