全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android 媒体库数据更新方法总结

Android 媒体库数据更新方法总结

在项目中,我们经常要创建个自己的目录,里面存放一些图片啊文件之类,比如:我在SD卡中刚创建了一个文件夹A,里面放入了照片B,那么,这个时候我立马去Gallery里面查看这个目录里的照片,那么,我是无法看到的。

这是什么原因呢?

因为Android系统在启动的时候会启动MediaScannerService扫描系统上的多媒体文件,然后将这些多媒体文件的信息加入到多媒体数据库中,应用程序要取得这些多媒体信息就是从这个多媒体数据库里面去取的,并不是从SD卡中取。也就是说,如果开机后增加或删除了一些多媒体,这个多媒体数据库是不会自动刷新的。

解决办法:1,开机重启;2,更新媒体库数据信息;

对于方法1,这个我们不可能添加个文件就去重启一次手机,因此这个pass。

对于方法2:

网上常用的方法是通过广播发送消息给系统,让系统自动更新一次媒体库,代码如下:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"  
     + Environment.getExternalStorageDirectory()))); 

这里,我们可以发送两个消息:Intent.ACTION_MEDIA_MOUNTED 是对媒体库进行全扫描;

Intent.ACTION_MEDIA_SCANNER_SCAN_FILE则是 扫描某个文件; 

经测试,这个方法对于android4.4以下的版本,是没有问题的,但是从android4.4开始,使用这个方法,会出现如下的异常:

Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED

这个问题会导致APP直接Crash。

经过查看SDK开发文档,我们发现,上述方法从android4.4开始,已经不再被允许。开发文档指出:4.4开始,不再允许非系统应用发送系统消息,而Intent.ACTION_MEDIA_MOUNTED正是系统消息,因此,为了解决不同版本的兼容问题,我们无法继续使用上述方法。

那要如何解决这个问题呢?

刚刚我们也说了,android系统在启动的时候会启动MediaScannerService扫描系统上的多媒体文件,那么,我们如果在查看Gallery之前,扫描一次多媒体文件,不是就解决了?

直接上代码:

private void updateGallery(String filename)//filename是我们的文件全名,包括后缀哦 
  { 
    MediaScannerConnection.scanFile(this, 
         new String[] { filename }, null, 
         new MediaScannerConnection.OnScanCompletedListener() { 
       public void onScanCompleted(String path, Uri uri) { 
         Log.i("ExternalStorage", "Scanned " + path + ":"); 
         Log.i("ExternalStorage", "-> uri=" + uri); 
       } 
     }); 
  } 

有了这个函数,当我们添加一个图像文件后,直接调用一下这个函数,对添加的图像文件进行扫描,就OK了,这样由于只是扫描了我们添加的文件,并非对整个媒体库文件进行扫描,因此,效率最高。经测试,上述方法可以完美解决媒体库更新的难题!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 媒体库数据更新  # 媒体库数据更新实现方法  # android TextView设置中文字体加粗实现方法  # android Handler详细使用方法实例  # android PopupWindow 和 Activity弹出窗口实现方式  # Android的Activity跳转动画各种效果整理  # android listview优化几种写法详细介绍  # 解决Android SDK下载和更新失败的方法详解  # Android SQLite数据库增删改查操作的使用详解  # 是从  # 重启  # 自己的  # 我是  # 文档  # 我在  # 不可能  # 说了  # 则是  # 这个问题  # 我们可以  # 希望能  # 这个时候  # 就去  # 或删除  # 当我们  # 谢谢大家  # 解决办法  # 数据库中  # 使用这个 


相关文章: 大连网站制作公司哪家好一点,大连买房网站哪个好?  建站主机选虚拟主机还是云服务器更好?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何高效配置香港服务器实现快速建站?  在线制作视频网站免费,都有哪些好的动漫网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  广东企业建站网站优化与SEO营销核心策略指南  如何通过万网虚拟主机快速搭建网站?  如何在VPS电脑上快速搭建网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  网站制作模板下载什么软件,ppt模板免费下载网站?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  相册网站制作软件,图片上的网址怎么复制?  设计网站制作公司有哪些,制作网页教程?  制作销售网站教学视频,销售网站有哪些?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  如何在搬瓦工VPS快速搭建网站?  ,巨量百应是干嘛的?  建站之星如何助力企业快速打造五合一网站?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  ,sp开头的版面叫什么?  建站10G流量真的够用吗?如何应对访问高峰?  网站制作壁纸教程视频,电脑壁纸网站?  如何制作网站标识牌,动态网站如何制作(教程)?  如何快速生成专业多端适配建站电话?  黑客入侵网站服务器的常见手法有哪些?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  微课制作网站有哪些,微课网怎么进?  建站之星客服服务时间及联系方式如何?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  简单实现Android文件上传  购物网站制作公司有哪些,哪个购物网站比较好?  高端网站建设与定制开发一站式解决方案 中企动力  小型网站建站如何选择虚拟主机?  如何快速辨别茅台真假?关键步骤解析  网页设计网站制作软件,microsoft office哪个可以创建网页?  魔方云NAT建站如何实现端口转发?  如何在阿里云部署织梦网站?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  盘锦网站制作公司,盘锦大洼有多少5G网站?  Python lxml的etree和ElementTree有什么区别  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。