From aee5f38fb598c6d610ef3f60205c203769cb21cb Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Fri, 5 Aug 2022 20:39:24 +0300 Subject: [PATCH] more folders picker --- .../ru/vtosters/lite/music/MP3Downloader.java | 18 ++++++---- .../lite/ui/fragments/MediaFragment.java | 34 +++++++++++++++++++ .../ru/vtosters/lite/utils/Preferences.java | 18 ++++++++++ smali/res/xml/preferences_media.xml | 12 +++++++ smali/smali_classes2/b/h/g/m/FileUtils.smali | 34 ++++++++++--------- 5 files changed, 93 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java b/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java index 27e33ba77..aacf4daf1 100644 --- a/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java @@ -1,11 +1,16 @@ package ru.vtosters.lite.music; +import static ru.vtosters.lite.utils.Preferences.getMusicDir; + import android.app.DownloadManager; import android.net.Uri; +import android.os.Build; import android.os.Environment; import android.util.Log; import android.widget.Toast; +import androidx.annotation.RequiresApi; + import com.vk.dto.music.MusicTrack; import org.json.JSONException; @@ -53,12 +58,10 @@ public class MP3Downloader { if (responseNode.has("url")) { var url = responseNode.optString("url"); Log.d("MP3Downloader", url); - if (url != null) { - if (url.endsWith(".mp3")) { - downloadMP3(track.toString(), url); - } else if (VKM3UParser.isM3U8(url)) { - AudioDownloader.downloadM3U8(track); - } + if (url.endsWith(".mp3")) { + downloadMP3(track.toString(), url); + } else if (VKM3UParser.isM3U8(url)) { + AudioDownloader.downloadM3U8(track); } } } @@ -69,13 +72,14 @@ public class MP3Downloader { }); } + @RequiresApi(api = Build.VERSION_CODES.M) private static void downloadMP3(String title, String url) { var downloadManager = AndroidUtils.getGlobalContext().getSystemService(DownloadManager.class); var request = new DownloadManager.Request(Uri.parse(url)) .setAllowedOverRoaming(true) .setTitle("Downloading " + title) .setDestinationInExternalFilesDir(AndroidUtils.getGlobalContext(), - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath(), + getMusicDir().getAbsolutePath(), title + ".mp3") .setVisibleInDownloadsUi(true); downloadManager.enqueue(request); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java index 1c8055e78..43cbc2cef 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java @@ -94,6 +94,19 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { findPreference("downloads_directory").setSummary( "Текущая папка: " + Preferences.getDownloadsDir() ); + + findPreference("photos_directory").setSummary( + "Текущая папка: " + Preferences.getPhotosDir() + ); + + findPreference("videos_directory").setSummary( + "Текущая папка: " + Preferences.getVideosDir() + ); + + findPreference("music_directory").setSummary( + "Текущая папка: " + Preferences.getMusicDir() + ); + findPreference("downloads_directory").setOnPreferenceClickListener(preference -> { var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); intent.addCategory(Intent.CATEGORY_DEFAULT); @@ -101,6 +114,27 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { return true; }); + findPreference("photos_directory").setOnPreferenceClickListener(preference -> { + var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); + intent.addCategory(Intent.CATEGORY_DEFAULT); + startActivityForResult(intent, REQUEST_CODE_SET_DOWNLOAD_DIRECTORY); + return true; + }); + + findPreference("videos_directory").setOnPreferenceClickListener(preference -> { + var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); + intent.addCategory(Intent.CATEGORY_DEFAULT); + startActivityForResult(intent, REQUEST_CODE_SET_DOWNLOAD_DIRECTORY); + return true; + }); + + findPreference("music_directory").setOnPreferenceClickListener(preference -> { + var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); + intent.addCategory(Intent.CATEGORY_DEFAULT); + startActivityForResult(intent, REQUEST_CODE_SET_DOWNLOAD_DIRECTORY); + return true; + }); + if (isLoggedIn()) { findPreference("lastfm_auth").setSummary("Вы авторизованы как " + Scrobbler.getUserName()); } else { diff --git a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java index 8b02a202f..15d1380f3 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -392,4 +392,22 @@ public class Preferences { "downloads_directory", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath())); } + + public static File getPhotosDir() { + return new File(getPreferences().getString( + "photos_directory", + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath())); + } + + public static File getVideosDir() { + return new File(getPreferences().getString( + "videos_directory", + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getAbsolutePath())); + } + + public static File getMusicDir() { + return new File(getPreferences().getString( + "videos_directory", + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath())); + } } diff --git a/smali/res/xml/preferences_media.xml b/smali/res/xml/preferences_media.xml index 2bcf4056a..0148111eb 100644 --- a/smali/res/xml/preferences_media.xml +++ b/smali/res/xml/preferences_media.xml @@ -29,6 +29,18 @@ android:key="downloads_directory" android:summary="Текущая папка: " android:title="Папка для загрузок" /> + + + getVKDir()Ljava/io/File; + # .line 1 + # invoke-static {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File; - move-result-object v0 + # move-result-object v0 - const-string v1, "Photos" + # const-string v1, "Photos" - invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; + # invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; + + # move-result-object v0 + + invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getPhotosDir()Ljava/io/File; move-result-object v0 @@ -2105,14 +2109,18 @@ .method private static e()Ljava/io/File; .locals 2 - .line 1 - invoke-static {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File; + # .line 1 + # invoke-static {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File; - move-result-object v0 + # move-result-object v0 - const-string v1, "Videos" + # const-string v1, "Videos" - invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; + # invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; + + # move-result-object v0 + + invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getVideosDir()Ljava/io/File; move-result-object v0 @@ -3631,12 +3639,6 @@ .line 2 invoke-static {v0}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;)V - const-string v1, "Download" - - invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; - - move-result-object v0 - const-string v1, "VK" .line 3