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

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())));


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值