Extracted deprecated methods to functions e.g. Environment.getExternalStorageDirectory()

This commit is contained in:
Prathamesh More 2022-04-19 13:45:01 +05:30
parent aaee076718
commit 3105da068d
24 changed files with 94 additions and 67 deletions

View file

@ -37,6 +37,8 @@ object Constants {
const val IS_MUSIC =
MediaStore.Audio.AudioColumns.IS_MUSIC + "=1" + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''"
const val DATA = "_data"
@Suppress("Deprecation")
val baseProjection = arrayOf(
BaseColumns._ID, // 0
@ -44,7 +46,7 @@ object Constants {
MediaStore.Audio.AudioColumns.TRACK, // 2
MediaStore.Audio.AudioColumns.YEAR, // 3
MediaStore.Audio.AudioColumns.DURATION, // 4
MediaStore.Audio.AudioColumns.DATA, // 5
DATA, // 5
MediaStore.Audio.AudioColumns.DATE_MODIFIED, // 6
MediaStore.Audio.AudioColumns.ALBUM_ID, // 7
MediaStore.Audio.AudioColumns.ALBUM, // 8

View file

@ -10,13 +10,14 @@ import androidx.fragment.app.DialogFragment
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.materialDialog
import code.name.monkey.retromusic.util.getExternalStorageDirectory
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.list.listItems
import com.afollestad.materialdialogs.list.updateListItems
import java.io.File
class BlacklistFolderChooserDialog : DialogFragment() {
private var initialPath: String = Environment.getExternalStorageDirectory().absolutePath
private var initialPath: String = getExternalStorageDirectory().absolutePath
private var parentFolder: File? = null
private var parentContents: Array<File>? = null
private var canGoUp = false
@ -97,7 +98,7 @@ class BlacklistFolderChooserDialog : DialogFragment() {
parentFolder = parentContents?.getOrNull(if (canGoUp) i - 1 else i)
canGoUp = true
if (parentFolder?.absolutePath == "/storage/emulated") {
parentFolder = Environment.getExternalStorageDirectory()
parentFolder = getExternalStorageDirectory()
}
}
reload()

View file

@ -120,7 +120,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
binding.albumCoverContainer.transitionName = arguments.extraAlbumId.toString()
postponeEnterTransition()
detailsViewModel.getAlbum().observe(viewLifecycleOwner) {
requireView().doOnPreDraw {
view.doOnPreDraw {
startPostponedEnterTransition()
}
albumArtistExists = !it.albumArtist.isNullOrEmpty()

View file

@ -91,7 +91,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
binding.artistCoverContainer.transitionName = (artistId ?: artistName).toString()
postponeEnterTransition()
detailsViewModel.getArtist().observe(viewLifecycleOwner) {
requireView().doOnPreDraw {
view.doOnPreDraw {
startPostponedEnterTransition()
}
showArtist(it)

View file

@ -58,6 +58,8 @@ import code.name.monkey.retromusic.util.FileUtil
import code.name.monkey.retromusic.util.PreferenceUtil.startDirectory
import code.name.monkey.retromusic.util.RetroColorUtil
import code.name.monkey.retromusic.util.ThemedFastScroller.create
import code.name.monkey.retromusic.util.getExternalStorageDirectory
import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory
import code.name.monkey.retromusic.views.BreadCrumbLayout.Crumb
import code.name.monkey.retromusic.views.BreadCrumbLayout.SelectionCallback
import com.afollestad.materialcab.attached.AttachedCab
@ -420,7 +422,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
if (_binding != null) {
binding.recyclerView.updatePadding(
bottom = if (count > 0 && playingQueue.isNotEmpty()) dip(R.dimen.mini_player_height_expanded)
else dip(R.dimen.mini_player_height_expanded)
else dip(R.dimen.mini_player_height)
)
}
}
@ -654,11 +656,11 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
val defaultStartDirectory: File
get() {
val musicDir =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
val startFolder = if (musicDir.exists() && musicDir.isDirectory) {
musicDir
} else {
val externalStorage = Environment.getExternalStorageDirectory()
val externalStorage = getExternalStorageDirectory()
if (externalStorage.exists() && externalStorage.isDirectory) {
externalStorage
} else {

View file

@ -19,7 +19,6 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.activity.addCallback
import androidx.core.os.bundleOf
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.GridLayoutManager
@ -46,10 +45,6 @@ GenresFragment : AbsRecyclerViewFragment<GenreAdapter, LinearLayoutManager>(),
else
adapter?.swapDataSet(listOf())
}
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
remove()
requireActivity().onBackPressed()
}
}
override fun createLayoutManager(): LinearLayoutManager {

View file

@ -93,10 +93,6 @@ class HomeFragment :
binding.appBarLayout.statusBarForeground =
MaterialShapeDrawable.createWithElevationOverlay(requireContext())
binding.toolbar.drawNextToNavbar()
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
remove()
requireActivity().onBackPressed()
}
view.doOnLayout {
adjustPlaylistButtons()
}

View file

@ -318,9 +318,11 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
libraryViewModel.clearHistory()
val snackBar =
Snackbar.make(binding.container,
Snackbar.make(
binding.container,
getString(R.string.history_cleared),
Snackbar.LENGTH_LONG)
Snackbar.LENGTH_LONG
)
.setAction(getString(R.string.history_undo_button)) {
libraryViewModel.restoreHistory()
}

View file

@ -1,11 +1,11 @@
package code.name.monkey.retromusic.fragments.playlists
import android.graphics.Color
import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.activity.addCallback
import androidx.core.view.doOnPreDraw
import androidx.core.view.isVisible
import androidx.navigation.fragment.findNavController
@ -31,6 +31,8 @@ import com.afollestad.materialcab.attached.destroy
import com.afollestad.materialcab.attached.isActive
import com.afollestad.materialcab.createCab
import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.transition.MaterialArcMotion
import com.google.android.material.transition.MaterialContainerTransform
import com.google.android.material.transition.MaterialSharedAxis
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator
import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator
@ -52,6 +54,16 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
private lateinit var playlist: PlaylistWithSongs
private lateinit var playlistSongAdapter: OrderablePlaylistSongAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedElementEnterTransition = MaterialContainerTransform(requireContext(), true).apply {
drawingViewId = R.id.fragment_container
scrimColor = Color.TRANSPARENT
setAllContainerColors(surfaceColor())
setPathMotion(MaterialArcMotion())
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentPlaylistDetailBinding.bind(view)
@ -72,13 +84,7 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
}
}
postponeEnterTransition()
requireView().doOnPreDraw { startPostponedEnterTransition() }
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
if (!handleBackPress()) {
remove()
requireActivity().onBackPressed()
}
}
view.doOnPreDraw { startPostponedEnterTransition() }
binding.appBarLayout.statusBarForeground =
MaterialShapeDrawable.createWithElevationOverlay(requireContext())
}
@ -201,5 +207,4 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
}
return cab as AttachedCab
}
}

View file

@ -16,7 +16,6 @@ package code.name.monkey.retromusic.fragments.playlists
import android.os.Bundle
import android.view.*
import androidx.activity.addCallback
import androidx.core.os.bundleOf
import androidx.core.view.MenuCompat
import androidx.navigation.fragment.findNavController
@ -46,10 +45,6 @@ class PlaylistsFragment :
else
adapter?.swapDataSet(listOf())
}
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
remove()
requireActivity().onBackPressed()
}
}
override val titleRes: Int

View file

@ -11,6 +11,7 @@ import code.name.monkey.retromusic.helper.BackupContent.*
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.repository.Repository
import code.name.monkey.retromusic.repository.SongRepository
import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.koin.core.component.KoinComponent
@ -249,7 +250,7 @@ object BackupHelper : KoinComponent {
fun getBackupRoot(): File {
return File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),
getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),
"RetroMusic/Backups"
)
}

View file

@ -19,7 +19,6 @@ import android.app.Activity
import android.content.*
import android.database.Cursor
import android.net.Uri
import android.os.Environment
import android.os.IBinder
import android.provider.DocumentsContract
import android.widget.Toast
@ -30,6 +29,7 @@ import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.repository.SongRepository
import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.getExternalStorageDirectory
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import java.io.File
@ -440,7 +440,7 @@ object MusicPlayerRemote : KoinComponent {
var songFile: File? = null
if (uri.authority != null && uri.authority == "com.android.externalstorage.documents") {
songFile = File(
Environment.getExternalStorageDirectory(),
getExternalStorageDirectory(),
uri.path?.split(":".toRegex(), 2)?.get(1)
)
}

View file

@ -15,6 +15,7 @@
package code.name.monkey.retromusic.providers;
import static code.name.monkey.retromusic.service.MusicService.MEDIA_STORE_CHANGED;
import static code.name.monkey.retromusic.util.FileUtilsKt.getExternalStoragePublicDirectory;
import android.content.ContentValues;
import android.content.Context;
@ -50,11 +51,11 @@ public class BlacklistStore extends SQLiteOpenHelper {
if (!PreferenceUtil.INSTANCE.isInitializedBlacklist()) {
// blacklisted by default
sInstance.addPathImpl(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS));
getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS));
sInstance.addPathImpl(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS));
getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS));
sInstance.addPathImpl(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES));
getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES));
PreferenceUtil.INSTANCE.setInitializedBlacklist(true);
}

View file

@ -27,6 +27,7 @@ import androidx.annotation.Nullable;
import java.util.List;
import code.name.monkey.retromusic.App;
import code.name.monkey.retromusic.Constants;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.repository.RealSongRepository;
@ -128,7 +129,7 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper {
builder.append(AudioColumns.DURATION);
builder.append(" LONG NOT NULL,");
builder.append(AudioColumns.DATA);
builder.append(Constants.DATA);
builder.append(" STRING NOT NULL,");
builder.append(AudioColumns.DATE_MODIFIED);
@ -192,7 +193,7 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper {
values.put(AudioColumns.TRACK, song.getTrackNumber());
values.put(AudioColumns.YEAR, song.getYear());
values.put(AudioColumns.DURATION, song.getDuration());
values.put(AudioColumns.DATA, song.getData());
values.put(Constants.DATA, song.getData());
values.put(AudioColumns.DATE_MODIFIED, song.getDateModified());
values.put(AudioColumns.ALBUM_ID, song.getAlbumId());
values.put(AudioColumns.ALBUM, song.getAlbumName());

View file

@ -148,7 +148,7 @@ class RealPlaylistRepository(
val trackNumber = cursor.getInt(AudioColumns.TRACK)
val year = cursor.getInt(AudioColumns.YEAR)
val duration = cursor.getLong(AudioColumns.DURATION)
val data = cursor.getString(AudioColumns.DATA)
val data = cursor.getString(Constants.DATA)
val dateModified = cursor.getLong(AudioColumns.DATE_MODIFIED)
val albumId = cursor.getLong(AudioColumns.ALBUM_ID)
val albumName = cursor.getString(AudioColumns.ALBUM)
@ -202,7 +202,7 @@ class RealPlaylistRepository(
AudioColumns.TRACK, // 2
AudioColumns.YEAR, // 3
AudioColumns.DURATION, // 4
AudioColumns.DATA, // 5
Constants.DATA, // 5
AudioColumns.DATE_MODIFIED, // 6
AudioColumns.ALBUM_ID, // 7
AudioColumns.ALBUM, // 8

View file

@ -18,6 +18,7 @@ import android.content.Context
import android.database.Cursor
import android.provider.MediaStore.Audio.AudioColumns
import android.provider.MediaStore.Audio.Playlists.Members
import code.name.monkey.retromusic.Constants
import code.name.monkey.retromusic.Constants.IS_MUSIC
import code.name.monkey.retromusic.extensions.getInt
import code.name.monkey.retromusic.extensions.getLong
@ -75,7 +76,7 @@ object PlaylistSongsLoader {
val trackNumber = cursor.getInt(AudioColumns.TRACK)
val year = cursor.getInt(AudioColumns.YEAR)
val duration = cursor.getLong(AudioColumns.DURATION)
val data = cursor.getString(AudioColumns.DATA)
val data = cursor.getString(Constants.DATA)
val dateModified = cursor.getLong(AudioColumns.DATE_MODIFIED)
val albumId = cursor.getLong(AudioColumns.ALBUM_ID)
val albumName = cursor.getString(AudioColumns.ALBUM)
@ -113,7 +114,7 @@ object PlaylistSongsLoader {
AudioColumns.TRACK, // 2
AudioColumns.YEAR, // 3
AudioColumns.DURATION, // 4
AudioColumns.DATA, // 5
Constants.DATA, // 5
AudioColumns.DATE_MODIFIED, // 6
AudioColumns.ALBUM_ID, // 7
AudioColumns.ALBUM, // 8

View file

@ -22,6 +22,7 @@ import android.provider.MediaStore
import android.provider.MediaStore.Audio.AudioColumns
import android.provider.MediaStore.Audio.Media
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.Constants
import code.name.monkey.retromusic.Constants.IS_MUSIC
import code.name.monkey.retromusic.Constants.baseProjection
import code.name.monkey.retromusic.extensions.getInt
@ -32,6 +33,7 @@ import code.name.monkey.retromusic.helper.SortOrder
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.providers.BlacklistStore
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory
import java.text.Collator
/**
@ -118,7 +120,7 @@ class RealSongRepository(private val context: Context) : SongRepository {
override fun songsByFilePath(filePath: String, ignoreBlacklist: Boolean): List<Song> {
return songs(
makeSongCursor(
AudioColumns.DATA + "=?",
Constants.DATA + "=?",
arrayOf(filePath),
ignoreBlacklist = ignoreBlacklist
)
@ -133,7 +135,7 @@ class RealSongRepository(private val context: Context) : SongRepository {
val trackNumber = cursor.getInt(AudioColumns.TRACK)
val year = cursor.getInt(AudioColumns.YEAR)
val duration = cursor.getLong(AudioColumns.DURATION)
val data = cursor.getString(AudioColumns.DATA)
val data = cursor.getString(Constants.DATA)
val dateModified = cursor.getLong(AudioColumns.DATE_MODIFIED)
val albumId = cursor.getLong(AudioColumns.ALBUM_ID)
val albumName = cursor.getStringOrNull(AudioColumns.ALBUM)
@ -177,10 +179,10 @@ class RealSongRepository(private val context: Context) : SongRepository {
// Whitelist
if (PreferenceUtil.isWhiteList) {
selectionFinal =
selectionFinal + " AND " + AudioColumns.DATA + " LIKE ?"
selectionFinal + " AND " + Constants.DATA + " LIKE ?"
selectionValuesFinal = addSelectionValues(
selectionValuesFinal, arrayListOf(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).canonicalPath
getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).canonicalPath
)
)
} else {
@ -219,9 +221,9 @@ class RealSongRepository(private val context: Context) : SongRepository {
): String {
val newSelection = StringBuilder(
if (selection != null && selection.trim { it <= ' ' } != "") "$selection AND " else "")
newSelection.append(AudioColumns.DATA + " NOT LIKE ?")
newSelection.append(Constants.DATA + " NOT LIKE ?")
for (i in 0 until pathCount - 1) {
newSelection.append(" AND " + AudioColumns.DATA + " NOT LIKE ?")
newSelection.append(" AND " + Constants.DATA + " NOT LIKE ?")
}
return newSelection.toString()
}

View file

@ -5,10 +5,10 @@ import java.io.File
object FilePathUtil {
fun blacklistFilePaths(): List<String> {
return listOf<File>(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS),
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES),
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)
return listOf(
getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS),
getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES),
getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)
).map {
FileUtil.safeGetCanonicalPath(it)
}

View file

@ -14,6 +14,8 @@
package code.name.monkey.retromusic.util;
import static code.name.monkey.retromusic.util.FileUtilsKt.getExternalStorageDirectory;
import android.content.Context;
import android.database.Cursor;
import android.os.Environment;
@ -22,6 +24,7 @@ import android.webkit.MimeTypeMap;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.os.EnvironmentCompat;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
@ -40,6 +43,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
import code.name.monkey.retromusic.Constants;
import code.name.monkey.retromusic.adapter.Storage;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.repository.RealSongRepository;
@ -87,7 +91,7 @@ public final class FileUtil {
if (files.size() > 0
&& files.size() < 999) { // 999 is the max amount Androids SQL implementation can handle.
selection =
MediaStore.Audio.AudioColumns.DATA + " IN (" + makePlaceholders(files.size()) + ")";
Constants.DATA + " IN (" + makePlaceholders(files.size()) + ")";
}
}
@ -96,7 +100,7 @@ public final class FileUtil {
return songCursor == null
? null
: new SortedCursor(songCursor, paths, MediaStore.Audio.AudioColumns.DATA);
: new SortedCursor(songCursor, paths, Constants.DATA);
}
private static String makePlaceholders(int len) {
@ -268,7 +272,7 @@ public final class FileUtil {
public static ArrayList<Storage> listRoots() {
ArrayList<Storage> storageItems = new ArrayList<>();
HashSet<String> paths = new HashSet<>();
String defaultPath = Environment.getExternalStorageDirectory().getPath();
String defaultPath = getExternalStorageDirectory().getPath();
String defaultPathState = Environment.getExternalStorageState();
if (defaultPathState.equals(Environment.MEDIA_MOUNTED) || defaultPathState.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
Storage ext = new Storage();
@ -277,7 +281,7 @@ public final class FileUtil {
} else {
ext.title = "Internal Storage";
}
ext.file = Environment.getExternalStorageDirectory();
ext.file = getExternalStorageDirectory();
storageItems.add(ext);
paths.add(defaultPath);
}

View file

@ -2,6 +2,7 @@ package code.name.monkey.retromusic.util
import android.content.Context
import android.net.Uri
import android.os.Environment
import android.util.Log
import java.io.File
import java.io.IOException
@ -23,7 +24,13 @@ object FileUtils {
* @return the file
* @throws IOException
*/
fun createFile(context: Context, directoryName: String, fileName: String, body: String, fileType: String): File {
fun createFile(
context: Context,
directoryName: String,
fileName: String,
body: String,
fileType: String
): File {
val root = createDirectory(context, directoryName)
val filePath = "$root/$fileName$fileType"
val file = File(filePath)
@ -57,4 +64,13 @@ object FileUtils {
}
return file
}
}
@Suppress("Deprecation")
fun getExternalStorageDirectory(): File {
return Environment.getExternalStorageDirectory()
}
@Suppress("Deprecation")
fun getExternalStoragePublicDirectory(type: String): File {
return Environment.getExternalStoragePublicDirectory(type)
}

View file

@ -26,7 +26,7 @@ import java.io.*
*/
object LyricUtil {
private val lrcRootPath =
Environment.getExternalStorageDirectory().toString() + "/RetroMusic/lyrics/"
getExternalStorageDirectory().toString() + "/RetroMusic/lyrics/"
private const val TAG = "LyricUtil"
fun writeLrcToLoc(
title: String, artist: String, lrcContext: String

View file

@ -5,7 +5,6 @@ import android.content.Context
import android.content.Intent
import android.database.Cursor
import android.net.Uri
import android.os.Environment
import android.provider.BaseColumns
import android.provider.MediaStore
import android.util.Log
@ -14,6 +13,7 @@ import androidx.core.content.contentValuesOf
import androidx.core.net.toUri
import androidx.fragment.app.FragmentActivity
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.Constants
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.db.PlaylistEntity
import code.name.monkey.retromusic.db.SongEntity
@ -79,7 +79,7 @@ object MusicUtil : KoinComponent {
private fun createAlbumArtDir(context: Context): File {
val albumArtDir = File(
if (VersionUtils.hasR()) context.cacheDir else Environment.getExternalStorageDirectory(),
if (VersionUtils.hasR()) context.cacheDir else getExternalStorageDirectory(),
"/albumthumbs/"
)
if (!albumArtDir.exists()) {
@ -385,7 +385,7 @@ object MusicUtil : KoinComponent {
) {
val songRepository: SongRepository = get()
val projection = arrayOf(
BaseColumns._ID, MediaStore.MediaColumns.DATA
BaseColumns._ID, Constants.DATA
)
// Split the query into multiple batches, and merge the resulting cursors
var batchStart: Int

View file

@ -16,6 +16,8 @@ package code.name.monkey.retromusic.util;
import static android.provider.MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
import static code.name.monkey.retromusic.util.FileUtilsKt.getExternalStorageDirectory;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@ -295,12 +297,12 @@ public class PlaylistsUtil {
public static File savePlaylist(Context context, Playlist playlist) throws IOException {
return M3UWriter.write(
new File(Environment.getExternalStorageDirectory(), "Playlists"), playlist);
new File(getExternalStorageDirectory(), "Playlists"), playlist);
}
public static File savePlaylistWithSongs(PlaylistWithSongs playlist) throws IOException {
return M3UWriter.writeIO(
new File(Environment.getExternalStorageDirectory(), "Playlists"), playlist);
new File(getExternalStorageDirectory(), "Playlists"), playlist);
}
public static boolean doesPlaylistExist(@NonNull final Context context, final int playlistId) {

View file

@ -6,6 +6,7 @@ import android.net.Uri
import android.os.Build
import android.provider.MediaStore
import androidx.annotation.RequiresApi
import code.name.monkey.retromusic.Constants
object UriUtil {
@RequiresApi(Build.VERSION_CODES.Q)
@ -13,7 +14,7 @@ object UriUtil {
val uri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL)
val proj = arrayOf(MediaStore.Files.FileColumns._ID)
context.contentResolver.query(
uri, proj, MediaStore.Files.FileColumns.DATA + "=?", arrayOf(path), null
uri, proj, Constants.DATA + "=?", arrayOf(path), null
)?.use { cursor ->
if (cursor.count != 0) {
cursor.moveToFirst()