WEB开发网
开发学院手机开发Android 开发 Android如何通过content provider构建媒体文件数据... 阅读

Android如何通过content provider构建媒体文件数据库

 2010-09-27 01:52:00 来源:WEB开发网   
核心提示:"bucket_id TEXT," +"bucket_display_name TEXT" +");");添加URI到match这个也很重要,因为不同类型的文件会保存在不同的table中,Android如何通过content provider构建媒体文件数据库

"bucket_id TEXT," +

"bucket_display_name TEXT" +

");");

添加URI到match这个也很重要,因为不同类型的文件会保存在不同的table中,如果我们得到一个URI为: content://media/external/images/media/1 通过UriMatcher.match(uri)将返回注册的IMAGES_MEDIA_ID值。

URI_MATCHER.addURI("media", "*/images/media", IMAGES_MEDIA);

URI_MATCHER.addURI("media", "*/images/media/#", IMAGES_MEDIA_ID);

URI格式解析如下:

URI格式中最重要的字段是authority,authority确定了操作数据库的Provider是由谁提供的。MediaProvider在AndroidManifest.xml中添加如下语句:

< provider android:name="MediaProvider" android:authorities="media"

android:multiprocess="false" />

Provider加载

MediaProvider安装在手机中,ContentResolver通过acquireProvider请求加载Provider程序。acquireProvider正是通过解析URI中的authority字段,在安装的package中查找与此authority相符的Provider,如果此Provider没有被加载ActivityMangerService将加载Provider程序,这个过程可以参考我以前写的Activity是如何加载的文章。 Provider到底是加载到调用Provider的应用程序还是将Provider程序加载到ActivityManagerService中作为 system Provider这个我不太确定是如何区分的,反正这两种方式都是可行的,总之按照sdk help 文档上的方式创建Provider程序,android会自动加载的。

记录的保存与获取

当Camera拍照完成或者是media play文件需要保存的时候,首先要构造保存的数据结构

ContentValues values = new ContentValues(7);

values.put(Images.Media.TITLE, imageName);

values.put(Images.Media.DISPLAY_NAME, imageName);

values.put(Images.Media.DESCRIPTION, description);

values.put(Images.Media.DATE_TAKEN, dateTaken);

values.put(Images.Media.MIME_TYPE, "image/jpeg");

values.put(Images.Media.ORIENTATION, orientation);

Uri uri = cr.insert(sStorageURI, values); //保存到数据库

上一页  1 2 3 4 5  下一页

Tags:Android 如何 通过

编辑录入:coldstar [复制链接] [打 印]
赞助商链接