android——照片管理——系统图库之媒体库(二)

来源:互联网 发布:熊猫tv竹子淘宝能买吗 编辑:程序博客网 时间:2024/05/21 09:48

java代码中使用android媒体数据库:

用ContentResolver去调用:

 

// 只拿DCIM下的图片String[] columns = { Media.DATA };String where = Media.DATA + " like  \'/mnt/sdcard/DCIM/%\'";// 得到游标Cursor cursor = context.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, where, null, null);while (cursor.moveToNext()) {   // 获得制定列的值   String key = cursor.getString(cursor.getColumnIndexOrThrow(Media.DATA));}cursor.close();

 

 

//获得相册列表String[] columns = { Media.BUCKET_DISPLAY_NAME };String groupby = " 1=1 ) group by ("+Media.BUCKET_DISPLAY_NAME;Cursor cursor = activity.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, groupby, null, null);while (cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndexOrThrow(Media.BUCKET_DISPLAY_NAME));}cursor.close();

 

getContentResolver().query方法中:

第一个参数Media.EXTERNAL_CONTENT_URI为所要查询的表,代表from images;

第二个代表所要查询的列,当输入为null则代表select *;

第三个代表where,所以若想group by则会拼出以上奇怪的字符串,其意思相当于where (1=1) group by (bucket_display_name)

 

若对图片媒体文件进行了增删改的操作时,如果不更新该数据库则会造成显示内容与数据库内容不同步,android只会定时使用媒体扫描器去同步数据库,而我们可以手动启用媒体扫描器,一行代码即可:

// 发送一个广播更新媒体数据库信息sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));


 

原创粉丝点击