diff options
| author | Timo Wilken | 2021-12-23 16:34:59 +0100 |
|---|---|---|
| committer | Timo Wilken | 2021-12-23 16:34:59 +0100 |
| commit | 4f16bf637e6e09deda6d733299e4605483e9d24a (patch) | |
| tree | 71b80211e7a36567ad87ddd28b3e4f13e5b6d20a | |
| parent | cea05fb651ab389a4d6440613a66ccbc091bfbbe (diff) | |
If we use a MediaScannerConnection instance, we have to wait for it to process
all files (not just accept them) to disconnect, else the last files will not be
scanned successfully.
The static MediaScannerConnection::scanFile method solves this problem.
| -rw-r--r-- | app/src/main/java/net/twilken/amsupd/MainActivity.java | 11 | ||||
| -rw-r--r-- | app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java | 2 |
2 files changed, 5 insertions, 8 deletions
diff --git a/app/src/main/java/net/twilken/amsupd/MainActivity.java b/app/src/main/java/net/twilken/amsupd/MainActivity.java index ec9e3d1..4945fed 100644 --- a/app/src/main/java/net/twilken/amsupd/MainActivity.java +++ b/app/src/main/java/net/twilken/amsupd/MainActivity.java @@ -23,7 +23,6 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton; import java.io.File; import java.util.ArrayList; import java.util.Locale; -import java.util.Objects; public class MainActivity extends AppCompatActivity { @NonNull @@ -57,9 +56,7 @@ public class MainActivity extends AppCompatActivity { private void updateMediaStore() { ((TextView)this.findViewById(R.id.scrollingText)).setText(""); - MediaScannerConnection connection = new MediaScannerConnection(this.getBaseContext(), - new UpdaterMediaScannerClient(this::appendText)); - connection.connect(); + ArrayList<String> files = new ArrayList<>(128), mimeTypes = new ArrayList<>(128); for (String imageDir : ((EditText)this.findViewById(R.id.scanDirs)).getText().toString().split("\n")) { for (File image : listFilesRecursively(new File(Environment.getExternalStorageDirectory(), imageDir))) { String path = image.getAbsolutePath(), mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension( @@ -68,11 +65,13 @@ public class MainActivity extends AppCompatActivity { this.appendText(String.format("NOT SCANNING %s: unknown MIME type\n", path)); } else { this.appendText(String.format("SCAN %s (%s)\n", path, mimeType)); - connection.scanFile(path, mimeType); + files.add(path); + mimeTypes.add(mimeType); } } } - connection.disconnect(); + MediaScannerConnection.scanFile(this.getBaseContext(), files.toArray(new String[0]), + mimeTypes.toArray(new String[0]), new UpdaterMediaScannerClient(this::appendText)); } @Override diff --git a/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java b/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java index 48cee9c..88016ba 100644 --- a/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java +++ b/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java @@ -3,8 +3,6 @@ package net.twilken.amsupd; import android.media.MediaScannerConnection; import android.net.Uri; -import androidx.appcompat.app.AppCompatActivity; - import java.util.function.Consumer; public class UpdaterMediaScannerClient implements MediaScannerConnection.MediaScannerConnectionClient { |
