|
58 | 58 | import com.amaze.filemanager.filesystem.FileProperties;
|
59 | 59 | import com.amaze.filemanager.filesystem.HybridFile;
|
60 | 60 | import com.amaze.filemanager.filesystem.HybridFileParcelable;
|
| 61 | +import com.amaze.filemanager.filesystem.MediaStoreHack; |
61 | 62 | import com.amaze.filemanager.filesystem.SafRootHolder;
|
62 | 63 | import com.amaze.filemanager.filesystem.files.CryptUtil;
|
63 | 64 | import com.amaze.filemanager.filesystem.files.EncryptDecryptUtils;
|
|
136 | 137 | import jcifs.smb.SmbFile;
|
137 | 138 | import kotlin.collections.ArraysKt;
|
138 | 139 | import kotlin.collections.CollectionsKt;
|
| 140 | +import kotlin.text.StringsKt; |
139 | 141 |
|
140 | 142 | public class MainFragment extends Fragment
|
141 | 143 | implements BottomBarButtonPath,
|
@@ -574,10 +576,26 @@ public void returnIntentResults(HybridFileParcelable[] baseFiles) {
|
574 | 576 | HybridFileParcelable resultBaseFile = result.getKey();
|
575 | 577 |
|
576 | 578 | if (requireMainActivity().mRingtonePickerIntent) {
|
577 |
| - intent.setDataAndType( |
578 |
| - resultUri, |
579 |
| - MimeTypes.getMimeType(resultBaseFile.getPath(), resultBaseFile.isDirectory())); |
580 |
| - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, resultUri); |
| 579 | + // Query MediaStore to get the proper content URI for the selected audio file |
| 580 | + Uri mediaFileUri = |
| 581 | + MediaStoreHack.getUriForMusicMediaFrom(resultBaseFile.getPath(), requireContext()); |
| 582 | + if (mediaFileUri != null) { |
| 583 | + String filename = resultBaseFile.getName(); |
| 584 | + Uri properUri = |
| 585 | + mediaFileUri |
| 586 | + .buildUpon() |
| 587 | + .appendQueryParameter("canonical", "1") |
| 588 | + .appendQueryParameter("title", StringsKt.substringBeforeLast(filename, ".", "")) |
| 589 | + .build(); |
| 590 | + // Set the proper content URI as result |
| 591 | + intent.setDataAndType(properUri, "audio/*"); |
| 592 | + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, properUri); |
| 593 | + } else { |
| 594 | + Toast.makeText(requireContext(), R.string.error_mediastore_query_uri, Toast.LENGTH_LONG) |
| 595 | + .show(); |
| 596 | + requireMainActivity().finish(); |
| 597 | + return; |
| 598 | + } |
581 | 599 | } else {
|
582 | 600 | LOG.debug("pickup file");
|
583 | 601 | intent.setDataAndType(resultUri, MimeTypes.getExtension(resultBaseFile.getPath()));
|
@@ -1353,7 +1371,7 @@ public void hide(String path) {
|
1353 | 1371 | LOG.warn("failure when hiding file", e);
|
1354 | 1372 | }
|
1355 | 1373 | }
|
1356 |
| - MediaConnectionUtils.scanFile( |
| 1374 | + MediaConnectionUtils.scanFiles( |
1357 | 1375 | requireMainActivity(), new HybridFile[] {new HybridFile(OpenMode.FILE, path)});
|
1358 | 1376 | }
|
1359 | 1377 | }
|
|
0 commit comments