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: //其他方法省略
相关推荐
总的来说,"Android源码——数据库SQLite.zip"的内容涵盖了SQLite在Android中的使用、数据库的创建与管理、SQL操作、事务处理、性能优化等方面的知识,对于深入理解Android应用的数据存储机制具有很高的学习价值。
"安卓Android源码——数据口袋.zip"可能包含的是一个关于数据管理或存储的开源项目,旨在帮助开发者更好地理解和处理Android设备上的数据。这个压缩包很可能是某个开发者的个人实践、教程或者是针对Android平台的...
《解析Google Android SDK——智能手机开发范例手册》是一本深入探讨Android应用开发的书籍,它提供了丰富的实例,帮助开发者理解并掌握Android SDK的各种工具和技术。本文将基于书中的章节命名,如c3、c12等,来...
在Android开发中,文件存储是应用保存数据的一种常见方式,尤其适用于小规模、非结构化的数据,例如日程安排应用中的活动记录。本教程将详细讲解如何实现一个基于文件存储的日程安排应用。 首先,我们需要了解...
本资料包"安卓Android源码——数据的储存与读取.zip"可能包含了一些关于如何在Android平台上存储和检索数据的示例代码和讲解,这将帮助开发者更好地理解这一核心概念。 在Android中,有多种数据存储方式,每种都有...
ContentProvider用于在不同应用间共享数据,是Android四大组件之一。掌握如何创建和使用ContentProvider,能够实现跨应用的数据交换。 八、碎片(Fragment) Fragment是用于构建可重用的UI模块,尤其在多屏幕适配中...
在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的重要角色。本教程“mars—第一季android——contentProvider”聚焦于如何利用ContentProvider来实现不同应用程序之间的数据...
7. **ContentProvider**: 在Android中,ContentProvider是数据共享的接口,相册应用可以通过ContentProvider来提供对图片的访问权限,其他应用可以通过Uri查询和操作这些图片。 8. **异步处理**: 图片加载和处理...
【标题】: "安卓Android源码——精典源码之便签软件.zip" 提供的是一份关于Android平台上的便签应用的源代码。这个源码可以作为一个学习Android开发、理解应用程序架构以及深入探究Android UI设计和数据持久化机制的...
4. **ContentProvider**:如果EIM涉及到数据存储和共享,ContentProvider是Android中统一数据访问的接口,可以用来与其他应用共享数据。 5. **Intent和IntentFilter**:Intent用于启动活动、服务或广播接收器,...
《安卓Android源码——应用开发揭秘》是一本深入解析Android应用开发背后原理和技术的书籍,其源码对应压缩包提供了丰富的实践案例和详细注解,是开发者深入理解Android系统及应用开发的重要参考资料。通过分析这些...
这份“Android源码——备忘录源码.zip”压缩包很可能包含了一个完整的备忘录应用的源代码,对于学习Android开发,特别是对UI设计、数据存储和事件处理感兴趣的开发者来说,是一个宝贵的资源。下面我们将详细探讨这个...
本资源"安卓Android源码——通讯录的开发_完整代码.zip"提供了一个完整的通讯录应用开发案例,可以帮助开发者深入理解Android系统中关于联系人管理的底层机制以及UI设计的实践技巧。 1. **Android源码分析** - **...
在"Android源码——小米系统之便签源码.zip"这个压缩包中,我们可能找到的是小米便签应用的源代码,这对于我们理解Android应用开发,特别是针对特定厂商定制系统的开发有着重要价值。通过分析这些源码,我们可以学习...
《安卓Android源码——经典源码之公交查询》 在移动开发领域,Android操作系统占据了重要的地位,而深入理解Android源码对于开发者来说是提升技能的关键步骤。本压缩包中的源码是一个公交查询应用,旨在帮助用户...
2. 数据存储:为了提高用户体验,应用通常会将部分数据缓存在本地。Android提供了SQLite数据库和SharedPreferences等本地存储机制。在WordPress for Android中,我们可能会发现如何使用ContentProvider进行数据操作...
本资料包围绕“安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码.rar”展开,提供了豆瓣移动客户端的源码和相关讲解,旨在帮助开发者了解并掌握Android应用的开发流程和技巧。 一、Android...
《安卓Android源码——Contacts详解》 在深入探讨安卓Android源码中的Contacts部分之前,我们需要先理解Contacts在安卓系统中的重要地位。Contacts是用户管理个人联系人信息的主要应用,它负责存储、显示和操作联系...
ContentProvider是Android四大组件之一,负责数据的存储和共享。通过查询MediaStore的内容提供者,Gallery2可以获取到设备上的所有图片信息,包括路径、尺寸、时间等。这部分源码展示了如何进行数据查询和解析,对于...