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

 

Android技术4:Android4.4中如何更新相册信息,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。