魅族手机 自定义相机拍的照片文件,放在DCIM/Camera 目录下,为什么在系统相册却不能显示呢?

desireyao 2016-11-25 09:23:39
...全文
1807 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjz729827161 2016-12-17
  • 打赏
  • 举报
回复
引用 3 楼 xjz729827161 的回复:
方法你已经找到了,不过我多说一句!系统的所获取的文件数据是保存在数据库里面的,当新增或者删除文件的时候,并不是实时更新数据库的,这就是为什么会出现你问的情况。而你找到的方法,只是进行了主动扫描,要求系统更新媒体文件相关的数据库
以后回复记得引用,,不别人看不到提示。。。瞎逛居然又看这个了!继续回答你的问题: 方法一:启动MediaScanner服务扫描文件,适用实时性要求不高,但是文件较多的方法,好处是不阻塞当前线程
public static final String ACTION_MEDIA_SCANNER_SCAN_DIR = "android.intent.action.MEDIA_SCANNER_SCAN_DIR";

public void scanDirAsync(Context ctx, String dir) {
Intent scanIntent = new Intent(ACTION_MEDIA_SCANNER_SCAN_DIR);
scanIntent.setData(Uri.fromFile(new File(dir)));
ctx.sendBroadcast(scanIntent);
} 
方法二:每次产生一个文件就扫描一次,也是Mediascaner不过不是启动服务,也会阻塞当前线程,不过实时性好。

MediaScanner scanner = new MediaScanner(ctx);
Locale locale = ctx.getResources().getConfiguration().locale;
String language = locale.getLanguage();
String country = locale.getCountry();
scanner.setLocale(language + \"_\" + country);
scanner.scanSingleFile(filePath, volumeName, mimeType);
scanner.scanDirectories(directories, volumeName);  
m0_37066538 2016-12-16
  • 打赏
  • 举报
回复
是什么方法?
desireyao 2016-11-29
  • 打赏
  • 举报
回复
你说的有道理,请问一下如果实时更新数据库,要怎么做呢?
xjz729827161 2016-11-29
  • 打赏
  • 举报
回复
方法你已经找到了,不过我多说一句!系统的所获取的文件数据是保存在数据库里面的,当新增或者删除文件的时候,并不是实时更新数据库的,这就是为什么会出现你问的情况。而你找到的方法,只是进行了主动扫描,要求系统更新媒体文件相关的数据库
desireyao 2016-11-28
  • 打赏
  • 举报
回复
还是自己找到了这个方法, private void scanFile(String path){ MediaScannerConnection.scanFile(mActivity,new String[] {path}, null, new MediaScannerConnection.OnScanCompletedListener() { public void onScanCompleted(String path, Uri uri) { } }); }
desireyao 2016-11-28
  • 打赏
  • 举报
回复
有人么???

80,361

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧