Posts tagged: android content provider

中国水系Android第一个版本

写这个例子的目的是供同事和开发Android的朋友学习借鉴。 这个版本不是凭空冒出来的,就像爱因斯坦做手工的故事(不知道的见这里)一样,还有更丑的“小凳子”,它们是: 简单使用SimpleCursorAdapter 在视图显示中使用Style 在视图显示中使用Theme android 1.6下使用Loader示例 参考它们可以了解版本的演进过程。可能降低学习曲线。 这个版本的首页: 点击条目,会弹出带图片的详细信息界面: 这里的图片是从维基百科直接下载的,并会缓存在本地。 另外,就是对横竖屏使用了不同的布局:    发送文章为PDF   

android 1.6下使用Loader示例

android 3.0 sdk,引入了很多新api,比如Loader。和Fragment类似(编写兼容android1.6的fragment),该api也可在android 1.6以上版本执行。 以下介绍如何编写Loader,实现对ListView的异步加载。效果如图: 示例中有一个后台线程每隔3秒更新数据库的长江记录,将记录改为“长江”或“Long River”。ListView无需监控数据库变化,基于Loader,会自动更新。实际上这里面是观察者模式,无非是系统自带了,只需调用即可,无需自己构造观察者。 这个示例也是完整的sqlite+content provider+cursor adapter+listview+loader组合示例。 日志引用中国水系Android第一个版本    发送文章为PDF   

在视图显示中使用Theme

在在视图显示中使用Style中,使用的是针对一个视图指定元素的样式。如果要针对整个Activity,对它的背景颜色和字体等做统一的样式约定,就需要使用另外一个技术,theme。 以下示例就是在在视图显示中使用Style基础上增加了theme。 日志引用中国水系Android第一个版本android 1.6下使用Loader示例    发送文章为PDF   

在视图显示中使用Style

如果视图界面风格需要统一的规划,就需要使用android视图技术中的style。这类似HTML技术和CSS技术的关系。 示例改编自简单使用SimpleCursorAdapter。示例截图如下: 日志引用中国水系Android第一个版本在视图显示中使用Theme    发送文章为PDF   

简单使用SimpleCursorAdapter

如果使用Sqlite,建议和ContentProvider结合使用。这样数据库的生命周期就不用自己管了。然后,如果要在比如ListView中显示,可以使用CursorAdapter。简化的办法是使用子类SimpleCursorAdapter。 以下就介绍一下使用sqlite+content provider+cursor adapter的最简单实现示例。太简单了,示例如图: 日志引用中国水系Android第一个版本在视图显示中使用Style    发送文章为PDF   

总结Content Provider的使用

本文参考:http://androidappdocs.appspot.com/guide/topics/providers/content-providers.html Android中的Content provider机制可支持在多个应用中存储和读取数据。这也是跨应用共享数据的唯一方式。在android系统中,没有一个公共的内存区域,供多个应用共享存储数据。 Android提供了一些主要数据类型的Content provider,比如音频、视频、图片和私人通讯录等。可在android.provider包下面找到一些android提供的Content provider。可以获得这些Content provider,查询它们包含的数据,当然前提是已获得适当的读取权限。 如果想公开自己的数据,那么可有两种办法: 创建自己的Content provider,需要继承ContentProvider类; 如果你的数据和已存在的Content provider数据结构一致,可以将数据写到已存在的Content provider中,当然前提是获取写该Content provider的权限。比如把OA中的成员通讯信息加入到系统的联系人Content provider中。    发送文章为PDF   

星期二 八月 3rd, 2010 in , , | 1 Comment »

在content provider中使用大型二进制文件

如果在content provider中使用小的二进制文件,可以参见在content provider中使用二进制数据。如果过大,可能会引起OutOfMemory错误。可以考虑把这些过大的文件保存在文件系统中,而不是sqlite数据库中。 本文实现代码的效果和在content provider中使用二进制数据中相同,区别是二进制的图像文件不再保存在sqlite数据库中,表中只保存一个特征码字符串,其实也可不用,直接用id。然后把图片保存在/data/data/your.package/files目录下。特征码就是用于定义该目录下具体的文件名的。 首先,修改表结构: database.execSQL("create table if not exists emperors("         + " id integer primary key autoincrement," + " name text,"         + "dynasty text," + "start_year text," + "image text"         + ");");   可以看到image字段使用文本型了。 日志引用总结Content Provider的使用    发送文章为PDF   

星期二 八月 3rd, 2010 in , , | No Comments »

在content provider中使用二进制数据

在android的sqlite中,如果要处理二进制数据,就要用到blob类型。这也可以运用到content provider中。 实现了一个超丑陋的示例,在编写完整的Content provider示例基础上。 日志引用在content provider中使用大型二进制文件    发送文章为PDF   

编写完整的Content provider示例

在在Content provider实现中使用SQLiteOpenHelper中实现的是特别简单的content provider,方法实现不全。下面给出一个实现比较全面的Content provider,当然也是很简单的。 使用UriMatcher UriMatcher可以帮助开发者识别Uri。比如: content://com.easymorse.cp.mycp/emperors 表示获取朝代列表集合。而: content://com.easymorse.cp.mycp/emperors/1 表示其中的_ID值为1的一个特定的记录。 如果自己写分析Uri的代码,比较繁琐和重复。android提供了方便的工具类UriMatcher。 日志引用总结Content Provider的使用在content provider中使用二进制数据    发送文章为PDF   

星期二 八月 3rd, 2010 in , , | No Comments »

在其他应用中使用自定义的Content Provider

在编写最简单的Content Provider中,是应用内部调用自定义的Content Provider,因此可以做到类似的写法: Cursor cursor = managedQuery(MyContentProvider.CONTENT_URI, null, null,null, null); 其实,如果编写调用android系统自带的比如通讯录的Content provider,也可以有类似的写法。因为你的应用可以引用到这些类。 如果是自己的Content provider要让其他应用使用,那不可能让人家把自己的包导入进来的。怎么办呢?可以直接把这些常量的值写出来即可。这也要求,如果你想共享自己的Content provider,需要告诉人家这些常量: MyContentProvider.CONTENT_URI MyContentProvider.NAME MyContentProvider.START_YEAR MyContentProvider.DYNASTY    发送文章为PDF   

星期五 七月 30th, 2010 in , , | No Comments »