首页 > 代码库 > Android技术4:Android4.4中如何更新相册信息
Android技术4:Android4.4中如何更新相册信息
当你到这篇文章时,你肯定遇到了在Android4.4版本中需要使用本地相册时,无法找到最新的照片这一问题。在Android4.4以前在需要获取手机本地图片信息时,只需要发送一个广播更新相册信息,然而系统更新到4.4之后该广播无效且报错。
广播如下:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
该广播起到扫描媒体文件达到更新作用,然后4.4就收回这一权限。做Android开发,由于版本兼容性,开发的产品需要测试各种版本系统,测试成本较大。好了,下面介绍具体的方法。
1.获取系统相册数据方法
1 Uri imageURI = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 2 ContentResolver mContentResolver = getApplicationContext().getContentResolver(); 3 //只查询jpeg和png的图片 4 Cursor mCursor = mContentResolver.query(imageURI, null,MediaStore.Images.Media.MIME_TYPE + "=? or " + MediaStore.Images.Media.MIME_TYPE + "=?", 5 new String[] { "image/jpeg", "image/png" }, MediaStore.Images.Media.DATE_TAKEN+" "+"desc"); 6 while (mCursor.moveToNext()) { 7 //获取图片的路径 8 String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA)); 9 if(!new File(path).isFile())continue;10 Log.i("tag",path);11 }12 mCursor.close();
权限:
1 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />2 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>3 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
2.解决相册更新问题
在Android4.4版本中更新相册信息不支持文件夹,只支持单个文件更新。
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file)));
虽然不能扫描文件夹,但是我们可以通过文件夹依次遍历的方法扫描文件。
1 //单个文件广播 2 private void fileScan(String file){ 3 GroupActivity.this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file))); 4 } 5 //遍历文件夹 6 private void folderScan(String path){ 7 File file = new File(path); 8 if(file.exists() && file.isDirectory()){ 9 File[] array = file.listFiles();10 for(int i=0;i<array.length;i++){11 File f = array[i];12 if(f.isFile()){13 String name = f.getName();14 if(name.endsWith(".png") || name.endsWith(".jpg")){15 fileScan(f.getAbsolutePath());16 }17 }18 else {19 folderScan(f.getAbsolutePath());20 }21 }22 }23 }
一般照片信息保存的DCIM目录下,更新该目录即可
1 String file= Environment.getExternalStorageDirectory().getAbsolutePath()+"/DCIM";2 folderScan(file);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。