From 8de33441fbd0f89477ba0bac85f850e690331e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A5=E8=97=A4=E4=B8=80=E5=8F=B7?= <18883840501@163.com> Date: Wed, 11 Sep 2019 18:07:18 +0800 Subject: [PATCH] =?UTF-8?q?#feature:=20After=20the=20photo=20is=20taken,?= =?UTF-8?q?=20notify=20the=20system=20to=20update=20the=20media=20library.?= =?UTF-8?q?=20=E6=8B=8D=E7=85=A7=E5=90=8E=E9=80=9A=E7=9F=A5=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=89=AB=E6=8F=8F=E6=9B=B4=E6=96=B0=E5=AA=92=E4=BD=93?= =?UTF-8?q?=E5=BA=93=EF=BC=8C=E8=A7=A3=E5=86=B3=E7=9B=AE=E5=89=8D=E6=8B=8D?= =?UTF-8?q?=E7=85=A7=E5=90=8E=E5=9C=A8=E7=9B=B8=E5=86=8C=E9=87=8C=E6=89=BE?= =?UTF-8?q?=E4=B8=8D=E5=88=B0=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82=20(#511)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * #feature: After the photo is taken, notify the system to update the media library * checkStyle: #feature: After the photo is taken, notify the system to update the media library * Delete meaningless code Delete meaningless code --- .../internal/utils/SingleMediaScanner.java | 44 +++++++++++++++++++ .../com/zhihu/matisse/ui/MatisseActivity.java | 7 +++ 2 files changed, 51 insertions(+) create mode 100644 matisse/src/main/java/com/zhihu/matisse/internal/utils/SingleMediaScanner.java diff --git a/matisse/src/main/java/com/zhihu/matisse/internal/utils/SingleMediaScanner.java b/matisse/src/main/java/com/zhihu/matisse/internal/utils/SingleMediaScanner.java new file mode 100644 index 000000000..81370df6f --- /dev/null +++ b/matisse/src/main/java/com/zhihu/matisse/internal/utils/SingleMediaScanner.java @@ -0,0 +1,44 @@ +package com.zhihu.matisse.internal.utils; + +import android.content.Context; +import android.media.MediaScannerConnection; +import android.net.Uri; + +/** + * @author 工藤 + * @email gougou@16fan.com + * create at 2018年10月23日12:17:59 + * description:媒体扫描 + */ +public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient { + + private MediaScannerConnection mMsc; + private String mPath; + private ScanListener mListener; + + public interface ScanListener { + + /** + * scan finish + */ + void onScanFinish(); + } + + public SingleMediaScanner(Context context, String mPath, ScanListener mListener) { + this.mPath = mPath; + this.mListener = mListener; + this.mMsc = new MediaScannerConnection(context, this); + this.mMsc.connect(); + } + + @Override public void onMediaScannerConnected() { + mMsc.scanFile(mPath, null); + } + + @Override public void onScanCompleted(String mPath, Uri mUri) { + mMsc.disconnect(); + if (mListener != null) { + mListener.onScanFinish(); + } + } +} diff --git a/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java b/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java index eb0a38278..41dea88fa 100644 --- a/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java +++ b/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java @@ -56,6 +56,7 @@ import com.zhihu.matisse.internal.utils.PathUtils; import com.zhihu.matisse.internal.utils.PhotoMetadataUtils; +import com.zhihu.matisse.internal.utils.SingleMediaScanner; import java.util.ArrayList; /** @@ -234,6 +235,12 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) MatisseActivity.this.revokeUriPermission(contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); + + new SingleMediaScanner(this.getApplicationContext(), path, new SingleMediaScanner.ScanListener() { + @Override public void onScanFinish() { + Log.i("SingleMediaScanner", "scan finish!"); + } + }); finish(); } }