资源描述:
《如何通过contentprovider构建媒体文件数据.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人收集整理,勿做商业用途如何通过构建媒体文件数据库 为,,等媒体文件提供用于数据的保存,删除,检索等。实现了类的几个操作的重要方法如,,。中类用于获取与创建。 { ; ; . <,>=<,>(); <,>=<,>(); (,,){ (,,,); =; =; } /** *. */ 第一次打开数据库时创建 (){ (,,0,); } 以的文件文件为例,数据库在第一次使用的时候被创建,对于文件,在为其创建一个: ("("+ ","+文件保存的序号6/6个人收集整理,
2、勿做商业用途 ","+记录文件保存路径 ","+文件大小 ","+图片名称 ","+文件类型 ","+ ","+ ","+ ","+ ","+ ","+ ","+ ","+ ","+ ","+ ","+ ","+ ""+ ");"); 添加到这个也很重要,因为不同类型的文件会保存在不同的中,如果我们得到一个为:1通过()将返回注册的值。 ("","*",); ("","*",); 格式解析如下: 格式中最重要的字段是,确定了操作数据库的是由谁提供的。在中添加如下
3、语句: <"""" ""/> 加载6/6个人收集整理,勿做商业用途 安装在手机中,通过请求加载程序。正是通过解析中的字段,在安装的中查找与此相符的,如果此没有被加载将加载程序,这个过程可以参考我以前写的是如何加载的文章。到底是加载到调用的应用程序还是将程序加载到中作为这个我不太确定是如何区分的,反正这两种方式都是可行的,总之按照文档上的方式创建程序,会自动加载的。 记录的保存与获取 当拍照完成或者是文件需要保存的时候,首先要构造保存的数据结构 =(7); (,); (,); (,);
4、 (,); (,""); (,); =(,);保存到数据库 是所以将调用,在中生成文件保存的路径并放在为项数据区。再通过访问调用打开文件并将或数据写入。 ,应用启动后不会扫描文件系统而是根据数据库的记录来进行列表并显示。这样做无疑效率比较高。 文件的删除 数据库中保存有文件的路径名,当调用从数据库中删除一个记录后,记录中保存的文件名(绝对路径)所指的文件也被删除了。而在应用程序中是找不到删除文件的代码,这个困扰了我两天,在程序中加,分析源代码,最终屏蔽中的一段代码找到了一点线索: (,,[
5、]){ ; =(); …………………………….. (){ =(); (){ (6/6个人收集整理,勿做商业用途 ":"+); } =(); (){ (,,,); (){ : : =("", ,); ; : =(, ,); ; } ()()(,); } } …………………….. } 将上面红色代码注掉以后发现文件没有被删除,而红色代码只是对数据库进行操作,因而文件应该是在清除数据库的记录时候被删除的。仔细查看创建的代码发现几个语句很奇怪,由于没有网络
6、去搜索一下关于的只能猜测这个语句的意思了当然也怪偶没去学学。 (""+ ""+ "=;"+ "();"+ "");6/6个人收集整理,勿做商业用途 创建为的触发器,=正是删除的意思,对于创建的会生成一个小图片保存为,这个记录也是自动清除的。"();"应该是删除文件的意思。 在3文件中还真找到这个函数,加上,进入选择一个文件删除,打出了删除文件名的全路径。 (3*,,3**) { …………………. (("",,8)0){只能删除路径下的东西要删除其他路 3();还需稍微改造一下 ;
7、 } …………………… } 如何将文件保存在手机上 中存在两个数据库一个是对应文件系统为,一个是内部数据库用于手机上的文件系统。遗憾的是虽然提供了操作内外两个数据库的功能,但在发布的应用中并没有使用这个内部文件系统。默认状态下,等文件是保存在上。,数据库都保存在手机文件系统上 : 如果要使用内部文件系统需要修改以下几个地方 1:函数 (,,) { a =(()); (){ ("."); ()+"/"++"/"++; }{ () +"/"++"/"++;6/6个人收集整理
8、,勿做商业用途 } } 恢复红色部分代码,将路径设置为手机内部文件系统文件夹。 2:保存文件使用的为1 红色表名使用内部文件系统数据库 3:修改3中函数 (3*,,3**) { …………………. (("",,8)0("",,12)){ 3(); ; } …………………… } 添加红色部分,文件位于手机上路径时也进行删除。这样当我们从数据库里删除一条记录时,数据区存取的文件路径中的文件也将自动删除