From 4ce55a22f90808ba350645e1299611469e24fb56 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:37:00 +0300 Subject: [PATCH] removed custom folders path feature --- .../java/com/vk/core/util/DownloadUtils.java | 14 +-- .../ru/vtosters/lite/dnr/DNRInjector.java | 5 +- .../lite/downloaders/AudioDownloader.java | 5 +- .../lite/downloaders/StoryDownloader.java | 4 +- .../lite/downloaders/VideoDownloader.java | 6 +- .../ru/vtosters/lite/hooks/JsonInjectors.java | 10 -- .../ru/vtosters/lite/hooks/NewsfeedHook.java | 15 --- .../ru/vtosters/lite/music/MP3Downloader.java | 4 +- .../lite/ui/fragments/MediaFragment.java | 72 ----------- .../lite/ui/fragments/OtherFragment.java | 9 -- .../ru/vtosters/lite/utils/AndroidUtils.java | 1 - .../ru/vtosters/lite/utils/CacheUtils.java | 2 - .../ru/vtosters/lite/utils/FileUriUtils.java | 119 ------------------ .../ru/vtosters/lite/utils/Preferences.java | 30 ----- smali/res/xml/preferences_media.xml | 18 --- smali/res/xml/preferences_other.xml | 3 - smali/smali_classes2/b/h/g/m/FileUtils.smali | 44 +++---- 17 files changed, 32 insertions(+), 329 deletions(-) delete mode 100644 app/src/main/java/ru/vtosters/lite/utils/FileUriUtils.java diff --git a/app/src/main/java/com/vk/core/util/DownloadUtils.java b/app/src/main/java/com/vk/core/util/DownloadUtils.java index c4a04af04..7456c69f9 100644 --- a/app/src/main/java/com/vk/core/util/DownloadUtils.java +++ b/app/src/main/java/com/vk/core/util/DownloadUtils.java @@ -1,10 +1,5 @@ package com.vk.core.util; -import static ru.vtosters.lite.utils.Preferences.getDownloadsDir; -import static ru.vtosters.lite.utils.Preferences.getMusicDir; -import static ru.vtosters.lite.utils.Preferences.getPhotosDir; -import static ru.vtosters.lite.utils.Preferences.getVideosDir; - import android.annotation.SuppressLint; import android.app.DownloadManager; import android.content.ActivityNotFoundException; @@ -13,6 +8,7 @@ import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteException; import android.net.Uri; +import android.os.Environment; import android.text.TextUtils; import com.facebook.common.i.MediaUtils; @@ -62,14 +58,14 @@ public class DownloadUtils { boolean c2 = MediaUtils.c(MediaUtils.b(str2)); if (file.endsWith(".jpg") || file.endsWith(".png") || file.endsWith(".jpeg")) { - b2 = new File(getPhotosDir(), file); + b2 = new File(Environment.DIRECTORY_PICTURES, file); pic = true; } else if (file.endsWith(".mp3") || file.endsWith(".wav") || file.endsWith(".ogg") || file.endsWith(".aac") || file.endsWith(".flac") || file.endsWith(".m4a")) { - b2 = new File(getMusicDir(), file); + b2 = new File(Environment.DIRECTORY_MUSIC, file); } else if (file.endsWith(".mp4") || file.endsWith(".mkv") || file.endsWith(".avi") || file.endsWith(".flv") || file.endsWith(".wmv") || file.endsWith(".mov") || file.endsWith(".3gp")) { - b2 = new File(getVideosDir(), file); + b2 = new File(Environment.DIRECTORY_MOVIES, file); } else { - b2 = new File(getDownloadsDir(), file); + b2 = new File(Environment.DIRECTORY_DOWNLOADS, file); } if (c2) { diff --git a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java index d4f6a02c7..ce633f485 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java @@ -16,7 +16,6 @@ import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import static ru.vtosters.lite.utils.AndroidUtils.getString; import static ru.vtosters.lite.utils.AndroidUtils.sendToast; -import static ru.vtosters.lite.utils.Preferences.getDownloadsDir; import android.annotation.SuppressLint; import android.content.Context; @@ -167,7 +166,7 @@ public class DNRInjector { } if (action == DialogAction.DOWNLOAD) { - File out = new File(Environment.getExternalStoragePublicDirectory(getDownloadsDir().getName()), "dialog-" + peerId + ".html"); + File out = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "dialog-" + peerId + ".html"); try { new MessagesDownloader().downloadDialog(peerId, new MessagesDownloader.HtmlDialogDownloaderFormatProvider(), out); } catch (Exception e) { @@ -220,7 +219,7 @@ public class DNRInjector { } if (action == DialogAction.DOWNLOAD) { - File out = new File(Environment.getExternalStoragePublicDirectory(getDownloadsDir().getPath()), peerId + "-dialog.html"); + File out = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), peerId + "-dialog.html"); try { new MessagesDownloader().downloadDialog(peerId, new MessagesDownloader.HtmlDialogDownloaderFormatProvider(), out); } catch (Exception e) { diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java index d548482e2..d13362b2d 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java @@ -1,7 +1,6 @@ package ru.vtosters.lite.downloaders; -import static ru.vtosters.lite.utils.Preferences.getMusicDir; - +import android.os.Environment; import android.util.Log; import androidx.core.app.NotificationCompat; @@ -36,7 +35,7 @@ public class AudioDownloader { return; } - var musicPath = getMusicDir().getAbsolutePath(); + var musicPath = Environment.DIRECTORY_MUSIC; var musicDir = new File(musicPath); if (!musicDir.exists()) { if (musicDir.mkdirs()) { diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java index 54d81bae1..862499300 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java @@ -2,11 +2,11 @@ package ru.vtosters.lite.downloaders; import static ru.vtosters.lite.downloaders.VideoDownloader.downloadVideo; import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.Preferences.getPhotosDir; import android.app.DownloadManager; import android.content.Context; import android.net.Uri; +import android.os.Environment; import com.vk.dto.common.ImageSize; import com.vk.dto.stories.model.StoryEntry; @@ -23,7 +23,7 @@ public class StoryDownloader { DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setTitle("photo" + story.E.a + ".jpg"); - request.setDestinationInExternalPublicDir(getPhotosDir().getName(), "photo" + story.E.a + ".jpg"); + request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, "photo" + story.E.a + ".jpg"); request.allowScanningByMediaScanner(); ((DownloadManager) getGlobalContext().getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request); return; diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java index d3f8e2cde..73a1fcb0d 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java @@ -6,12 +6,12 @@ import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import static ru.vtosters.lite.utils.AndroidUtils.getString; -import static ru.vtosters.lite.utils.Preferences.getVideosDir; import android.app.DownloadManager; import android.app.ProgressDialog; import android.content.Context; import android.net.Uri; +import android.os.Environment; import android.widget.Toast; import com.vk.core.dialogs.alert.VkAlertDialog; @@ -107,7 +107,7 @@ public class VideoDownloader { request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setTitle(videoFile.toString()); request.allowScanningByMediaScanner(); - request.setDestinationInExternalPublicDir(getVideosDir().getName(), videoFile + ".mp4"); + request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MOVIES, videoFile + ".mp4"); ((DownloadManager) getGlobalContext().getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request); return; } @@ -119,7 +119,7 @@ public class VideoDownloader { request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setTitle(videoFile.toString()); request.allowScanningByMediaScanner(); - request.setDestinationInExternalPublicDir(getVideosDir().getName(), videoFile + ".mp4"); + request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MOVIES, videoFile + ".mp4"); ((DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request); })); builder.show(); diff --git a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java index 06a89a509..57859f330 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java @@ -6,20 +6,11 @@ import static ru.vtosters.lite.hooks.OnlineFormatterHook.onlineHookProfiles; import static ru.vtosters.lite.proxy.ProxyUtils.getApi; import static ru.vtosters.lite.proxy.ProxyUtils.getStatic; import static ru.vtosters.lite.utils.AndroidUtils.getDefaultPrefs; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCaption; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCopyright; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isBadNews; -import static ru.vtosters.lite.utils.Preferences.ads; -import static ru.vtosters.lite.utils.Preferences.adsgroup; -import static ru.vtosters.lite.utils.Preferences.adsstories; -import static ru.vtosters.lite.utils.Preferences.authorsrecomm; import static ru.vtosters.lite.utils.Preferences.dev; import static ru.vtosters.lite.utils.Preferences.friendsblock; -import static ru.vtosters.lite.utils.Preferences.friendsrecomm; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.hasVerification; import static ru.vtosters.lite.utils.Preferences.podcastcatalog; -import static ru.vtosters.lite.utils.Preferences.postsrecomm; import static ru.vtosters.lite.utils.VTVerifications.isDeveloper; import static ru.vtosters.lite.utils.VTVerifications.isPrometheus; import static ru.vtosters.lite.utils.VTVerifications.isVerified; @@ -47,7 +38,6 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.NewsFeedFiltersUtils; public class JsonInjectors { private static final OkHttpClient mClient = new OkHttpClient(); diff --git a/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java b/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java index 2e2b45b85..08aa2eabc 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java @@ -3,18 +3,6 @@ package ru.vtosters.lite.hooks; import static java.lang.Long.MAX_VALUE; import static ru.vtosters.lite.utils.AndroidUtils.getDefaultPrefs; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCaption; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCopyright; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.injectFiltersReposts; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isAds; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isAuthorRecommendations; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isBadNews; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isFriendsRecommendations; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isGroupAds; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isMusicBlock; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isNewsBlock; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isPostRecommendations; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isRecomsGroup; import static ru.vtosters.lite.utils.Preferences.ads; import static ru.vtosters.lite.utils.Preferences.adsslider; import static ru.vtosters.lite.utils.Preferences.authorsrecomm; @@ -25,9 +13,6 @@ import static ru.vtosters.lite.utils.Preferences.vkme; import com.vk.core.preference.Preference; import com.vtosters.lite.api.ExtendedCommunityProfile; -import org.json.JSONException; -import org.json.JSONObject; - import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; 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 079d3b1c3..cf852669a 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,11 @@ package ru.vtosters.lite.music; import static ru.vtosters.lite.proxy.ProxyUtils.getApi; -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; @@ -79,7 +79,7 @@ public class MP3Downloader { .setAllowedOverRoaming(true) .setTitle("Downloading " + title) .setDestinationInExternalFilesDir(AndroidUtils.getGlobalContext(), - getMusicDir().getAbsolutePath(), + Environment.DIRECTORY_MUSIC, 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 d00485573..6633cbe1b 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 @@ -14,7 +14,6 @@ import static ru.vtosters.lite.utils.ThemesUtils.getAlertStyle; import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr; import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; -import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -44,8 +43,6 @@ import ru.vtosters.lite.downloaders.VideoDownloader; import ru.vtosters.lite.music.Scrobbler; import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter; import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.FileUriUtils; -import ru.vtosters.lite.utils.Preferences; public class MediaFragment extends MaterialPreferenceToolbarFragment { private final int REQUEST_CODE_SET_DOWNLOAD_DIRECTORY = 665; @@ -63,31 +60,6 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK) { - var path = data.getData(); - if (path != null) { - var prefs = getPreferences(); - var editor = prefs.edit(); - var actualPath = FileUriUtils.getFullPathFromTreeUri(path, getContext()); - switch (requestCode) { - case REQUEST_CODE_SET_DOWNLOAD_DIRECTORY: - editor.putString("downloads_directory", actualPath); - break; - case REQUEST_CODE_SET_MUSIC_DIRECTORY: - editor.putString("music_directory", actualPath); - break; - case REQUEST_CODE_SET_PHOTOS_DIRECTORY: - editor.putString("photos_directory", actualPath); - break; - case REQUEST_CODE_SET_VIDEOS_DIRECTORY: - editor.putString("videos_directory", actualPath); - break; - default: - return; - } - editor.apply(); - } - } } @Override @@ -112,50 +84,6 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { return true; }); - findPreference("downloads_directory").setSummary( - AndroidUtils.getString("current_download_folder") + " " + Preferences.getDownloadsDir() - ); - - findPreference("photos_directory").setSummary( - AndroidUtils.getString("current_download_folder") + " " + Preferences.getPhotosDir() - ); - - findPreference("videos_directory").setSummary( - AndroidUtils.getString("current_download_folder") + " " + Preferences.getVideosDir() - ); - - findPreference("music_directory").setSummary( - AndroidUtils.getString("current_download_folder") + " " + Preferences.getMusicDir() - ); - - findPreference("downloads_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("photos_directory").setOnPreferenceClickListener(preference -> { - var intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); - intent.addCategory(Intent.CATEGORY_DEFAULT); - startActivityForResult(intent, REQUEST_CODE_SET_PHOTOS_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_VIDEOS_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_MUSIC_DIRECTORY); - return true; - }); - if (isLoggedIn()) { findPreference("lastfm_auth").setSummary(AndroidUtils.getString("lastfm_authorized_as") + " " + Scrobbler.getUserName()); } else { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java index 1920c0e99..350c1b84c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java @@ -9,12 +9,9 @@ import static ru.vtosters.lite.ui.components.BackupManager.deletePrefs; import static ru.vtosters.lite.ui.components.BackupManager.restoreBackup; import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import static ru.vtosters.lite.utils.AndroidUtils.dp2px; -import static ru.vtosters.lite.utils.AndroidUtils.edit; import static ru.vtosters.lite.utils.AndroidUtils.getDefaultPrefs; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.setupFilters; import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; import android.annotation.SuppressLint; @@ -97,12 +94,6 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { return true; }); - findPreference("resetfolders").setOnPreferenceClickListener(preference -> { - edit().remove("photos_directory").remove("videos_directory").remove("audios_directory").remove("downloads_directory").apply(); - Toast.makeText(getContext(), AndroidUtils.getString("download_folders_reseted"), LENGTH_SHORT).show(); - return true; - }); - var pref = getDefaultPrefs().getString("autoclearcache", "Default"); switch (pref) { case "Default": diff --git a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java index 318978d22..2f35e756c 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java @@ -12,7 +12,6 @@ import android.preference.PreferenceManager; import android.util.Log; import android.widget.Toast; -import androidx.annotation.NonNull; import androidx.annotation.StringRes; import java.security.MessageDigest; diff --git a/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java b/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java index 914f2ecc8..08da1cb12 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java @@ -18,8 +18,6 @@ import com.vk.stickers.Stickers; import java.text.CharacterIterator; import java.text.StringCharacterIterator; -import b.h.g.m.FileUtils; - public class CacheUtils { private static CacheUtils sInstance = new CacheUtils(); public long size = 0; diff --git a/app/src/main/java/ru/vtosters/lite/utils/FileUriUtils.java b/app/src/main/java/ru/vtosters/lite/utils/FileUriUtils.java deleted file mode 100644 index 4c7ef068f..000000000 --- a/app/src/main/java/ru/vtosters/lite/utils/FileUriUtils.java +++ /dev/null @@ -1,119 +0,0 @@ -package ru.vtosters.lite.utils; - -import android.annotation.TargetApi; -import android.content.Context; -import android.net.Uri; -import android.os.Build; -import android.os.storage.StorageManager; -import android.os.storage.StorageVolume; -import android.provider.DocumentsContract; - -import androidx.annotation.Nullable; - -import java.io.File; -import java.lang.reflect.Array; -import java.lang.reflect.Method; -import java.util.List; - -// https://stackoverflow.com/questions/34927748/android-5-0-documentfile-from-tree-uri/36162691#36162691 - -public final class FileUriUtils { - - private static final String PRIMARY_VOLUME_NAME = "primary"; - - @Nullable - public static String getFullPathFromTreeUri(@Nullable final Uri treeUri, Context con) { - if (treeUri == null) return null; - String volumePath = getVolumePath(getVolumeIdFromTreeUri(treeUri),con); - if (volumePath == null) return File.separator; - if (volumePath.endsWith(File.separator)) - volumePath = volumePath.substring(0, volumePath.length() - 1); - - String documentPath = getDocumentPathFromTreeUri(treeUri); - if (documentPath.endsWith(File.separator)) - documentPath = documentPath.substring(0, documentPath.length() - 1); - - if (documentPath.length() > 0) { - if (documentPath.startsWith(File.separator)) - return volumePath + documentPath; - else - return volumePath + File.separator + documentPath; - } - else return volumePath; - } - - - private static String getVolumePath(final String volumeId, Context context) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) - return getVolumePathForAndroid11AndAbove(volumeId, context); - else - return getVolumePathBeforeAndroid11(volumeId, context); - } - - - private static String getVolumePathBeforeAndroid11(final String volumeId, Context context){ - try { - StorageManager mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); - Class storageVolumeClazz = Class.forName("android.os.storage.StorageVolume"); - Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList"); - Method getUuid = storageVolumeClazz.getMethod("getUuid"); - Method getPath = storageVolumeClazz.getMethod("getPath"); - Method isPrimary = storageVolumeClazz.getMethod("isPrimary"); - Object result = getVolumeList.invoke(mStorageManager); - - final int length = Array.getLength(result); - for (int i = 0; i < length; i++) { - Object storageVolumeElement = Array.get(result, i); - String uuid = (String) getUuid.invoke(storageVolumeElement); - Boolean primary = (Boolean) isPrimary.invoke(storageVolumeElement); - - if (primary && PRIMARY_VOLUME_NAME.equals(volumeId)) // primary volume? - return (String) getPath.invoke(storageVolumeElement); - - if (uuid != null && uuid.equals(volumeId)) // other volumes? - return (String) getPath.invoke(storageVolumeElement); - } - // not found. - return null; - } catch (Exception ex) { - return null; - } - } - - @TargetApi(Build.VERSION_CODES.R) - private static String getVolumePathForAndroid11AndAbove(final String volumeId, Context context) { - try { - StorageManager mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); - List storageVolumes = mStorageManager.getStorageVolumes(); - for (StorageVolume storageVolume : storageVolumes) { - // primary volume? - if (storageVolume.isPrimary() && PRIMARY_VOLUME_NAME.equals(volumeId)) - return storageVolume.getDirectory().getPath(); - - // other volumes? - String uuid = storageVolume.getUuid(); - if (uuid != null && uuid.equals(volumeId)) - return storageVolume.getDirectory().getPath(); - - } - // not found. - return null; - } catch (Exception ex) { - return null; - } - } - - private static String getVolumeIdFromTreeUri(final Uri treeUri) { - final String docId = DocumentsContract.getTreeDocumentId(treeUri); - final String[] split = docId.split(":"); - if (split.length > 0) return split[0]; - else return null; - } - - private static String getDocumentPathFromTreeUri(final Uri treeUri) { - final String docId = DocumentsContract.getTreeDocumentId(treeUri); - final String[] split = docId.split(":"); - if ((split.length >= 2) && (split[1] != null)) return split[1]; - else return File.separator; - } -} 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 a9f80b192..6bff7155f 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -4,11 +4,7 @@ import static java.lang.Long.MAX_VALUE; import static ru.vtosters.lite.proxy.ProxyUtils.setProxy; import static ru.vtosters.lite.utils.AndroidUtils.edit; import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; -import static ru.vtosters.lite.utils.CacheUtils.getInstance; -import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.setupFilters; import static ru.vtosters.lite.utils.SignatureChecker.validateAppSignature; import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; import static ru.vtosters.lite.utils.VTVerifications.isPrometheus; @@ -18,13 +14,11 @@ import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.os.Environment; import android.preference.PreferenceManager; import com.vtosters.lite.data.Users; import com.vtosters.lite.fragments.SettingsListFragment; -import java.io.File; import java.security.NoSuchAlgorithmException; import ru.vtosters.lite.ui.fragments.VTSettings; @@ -377,28 +371,4 @@ public class Preferences { } return origquality; } - - public static File getDownloadsDir() { - return new File(getPreferences().getString( - "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( - "music_directory", - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath())); - } } diff --git a/smali/res/xml/preferences_media.xml b/smali/res/xml/preferences_media.xml index b544a040f..40b18f817 100644 --- a/smali/res/xml/preferences_media.xml +++ b/smali/res/xml/preferences_media.xml @@ -24,24 +24,6 @@ android:summary="@string/pollresults_summ" android:title="@string/pollresults_title" /> - - - - - - - diff --git a/smali/smali_classes2/b/h/g/m/FileUtils.smali b/smali/smali_classes2/b/h/g/m/FileUtils.smali index 41e01c81f..88f57154d 100644 --- a/smali/smali_classes2/b/h/g/m/FileUtils.smali +++ b/smali/smali_classes2/b/h/g/m/FileUtils.smali @@ -187,17 +187,13 @@ .locals 2 .line 6 -# invoke-static {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File; -# -# move-result-object v0 -# -# const-string v1, "Downloads" -# -# 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 {}, Lb/h/g/m/FileUtils;->getVKDir()Ljava/io/File; - invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getDownloadsDir()Ljava/io/File; + move-result-object v0 + + const-string v1, "Downloads" + + invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; move-result-object v0 @@ -1811,18 +1807,14 @@ .method private static c()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, "Photos" + const-string v1, "Photos" - # 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; + invoke-static {v0, v1}, Lb/h/g/m/FileUtils;->a(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; move-result-object v0 @@ -2109,18 +2101,14 @@ .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; - - # move-result-object v0 - - invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getVideosDir()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