美文网首页Android
Android 通知相册更新保存的资源

Android 通知相册更新保存的资源

作者: 码农修行之路 | 来源:发表于2020-11-11 14:58 被阅读0次

        项目中需求,应用开通的云存储过期,导致用户之前的报警消息不可预览查看,因此,需求把应用中设备产生的报警图片和视频保存到相册,那么问题来了,用网上的一些方案扫描或者广播方式通知更新相册,对于一些手机(三星、华为mate8等部分8.0系统手机)结果就是失败,看下面一个例子

广播更新:

public void refreshAlbum(String fileAbsolutePath) {

    File imgFile = new File(fileAbsolutePath);

    Uri uri = Uri.fromFile(imgFile);

    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

    mediaScanIntent.setData(uri);

    mContext.sendBroadcast(mediaScanIntent);

}

不建议使用,会通知图库整个进行更新

扫描更新:

public void refreshAlbum(String fileAbsolutePath) {

    MediaScannerConnection mMediaScanner = new MediaScannerConnection(this, null);

    mMediaScanner.connect();

    if (mMediaScanner.isConnected()) {         

        mMediaScanner.scanFile(fileAbsolutePath, Constants.VIDEO_MIME_TYPE_MP4);

    } else {

        Elog.i(TAG, " 连接失败 ")

    }

}

上面的例子,极有可能会走“连接失败”,因为connect()执行需要时间,不可能立刻就会连接成功,所以扫描不了,也无法刷新,怎么解决呢!需要下面的优化,通过MediaScannerConnectionClient回调监听,确定MediaScannerConnection已经连接上,再进行扫描更新

public void refreshAlbum(String fileAbsolutePath, boolean isVideo) {

        mMediaScanner = new MediaScannerConnection(mContext, new MediaScannerConnection.MediaScannerConnectionClient() {

                @Override

                public void onMediaScannerConnected() {

                        if (mMediaScanner.isConnected()) {

                                Elog.i(TAG, " 连接成功 ")

                                if (isVideo) {

                                        mMediaScanner.scanFile(fileAbsolutePath, "video/mp4");

                                } else {

                                        mMediaScanner.scanFile(fileAbsolutePath, "image/jpeg");

                                }

                        } else {

                                ELog.e(TAG, " refreshAlbum() 无法更新图库,未连接,广播通知更新图库,异常情况下 ");

                        }

                }

                @Override

                public void onScanCompleted(String path, Uri uri) {

                        ELog.i(TAG, " 扫描完成 path: ", path, " uri: ", uri);

                }

        });

        mMediaScanner.connect();

}

使用上面的优化方案就可以很完美的解决保存相册中的数据资源(图片、视频)不显示的问题。

相关文章

  • Android 通知相册更新保存的资源

    项目中需求,应用开通的云存储过期,导致用户之前的报警消息不可预览查看,因此,需求把应用中设备产生的报警图片和视频保...

  • 2018-03-22代码工具整理系列

    拍照后通知相册更新: Android7.0访问本地目录FileProvider步骤 1.首先在res下创建xml资...

  • Android 保存图片或视频到相册并刷新相册

    在做项目时,有时会有这样的需求,需要将用户保存的图片和视频文件,能及时在相册中展示和查看,此时如果没有通知相册更新...

  • 图片保存到相册

    1、发送广播通知相册更新,此方法会将图片复制一份到系统相册中,删除照片互不影响 2、将当前保存的图片的文件夹添加到...

  • 工程中用到的开源资源

    title: 工程中用到的开源资源 1、给图片添加水印文字并保存 2、Android应用自动更新库

  • 照片框架PhotoKit使用记录

    1、创建自定义相册并命名 2、保存图片至相册 3、从指定相册读取照片资源 4、删除指定相册的指定图片 5、将相册中...

  • 热门手机壁纸

    点击图片保存手机(苹果(Android)壁纸-长按图片-保存图片。保存后,返回相册并将其设置为手机壁纸!因为都是高...

  • iPhone壁纸:豪车壁纸

    点击图片保存手机(苹果(Android)壁纸-长按图片-保存图片。保存后,返回相册并将其设置为手机壁纸!因为都是高...

  • 苹果Android壁纸

    点击图片保存手机(苹果(Android)壁纸-长按图片-保存图片。保存后,返回相册并将其设置为手机壁纸!因为都是高...

  • 高清手机壁纸

    点击图片保存手机(苹果(Android)壁纸-长按图片-保存图片。保存后,返回相册并将其设置为手机壁纸!因为都是高...

网友评论

    本文标题:Android 通知相册更新保存的资源

    本文链接:https://www.haomeiwen.com/subject/bbbebktx.html