diff --git a/app/src/main/java/com/aurora/store/MainActivity.kt b/app/src/main/java/com/aurora/store/MainActivity.kt index 606de519a..44bba4ef3 100644 --- a/app/src/main/java/com/aurora/store/MainActivity.kt +++ b/app/src/main/java/com/aurora/store/MainActivity.kt @@ -21,7 +21,10 @@ package com.aurora.store import android.Manifest import android.content.Intent +import android.os.Build import android.os.Bundle +import android.os.Environment +import android.provider.Settings import android.view.Menu import android.view.MenuItem import android.view.View @@ -42,7 +45,7 @@ import com.aurora.store.databinding.ActivityMainBinding import com.aurora.store.util.Log import com.aurora.store.util.ViewUtil import com.aurora.store.util.ViewUtil.getStyledAttribute -import com.aurora.store.util.extensions.isQAndAbove +import com.aurora.store.util.extensions.isRAndAbove import com.aurora.store.util.extensions.load import com.aurora.store.util.extensions.open import com.aurora.store.view.ui.about.AboutActivity @@ -97,16 +100,20 @@ class MainActivity : BaseActivity() { attachSearch() checkPermission() + checkStoragePermission() } private fun checkPermission() = runWithPermissions( Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE ) { - Log.i("External Storage Access Available") + Log.i("Required permissions available") + } - if (isQAndAbove()) { - //pickExternalFileDir() + private fun checkStoragePermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (!Environment.isExternalStorageManager()) + startActivity(Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)) } } diff --git a/app/src/main/java/com/aurora/store/util/PathUtil.kt b/app/src/main/java/com/aurora/store/util/PathUtil.kt index 2d442982a..546094bbc 100644 --- a/app/src/main/java/com/aurora/store/util/PathUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PathUtil.kt @@ -32,14 +32,18 @@ fun Context.getInternalBaseDirectory(): String { object PathUtil { private fun getDownloadDirectory(context: Context): String { - return if (isLAndAbove()) - context.getInternalBaseDirectory() + "/Downloads" - else + return if (isLAndAbove()) { + if (Preferences.getBoolean(context, Preferences.PREFERENCE_DOWNLOAD_EXTERNAL)) + getExternalPath() + else + context.getInternalBaseDirectory() + "/Downloads" + } else { getExternalPath() + } } fun getPackageDirectory(context: Context, packageName: String): String { - return getDownloadDirectory(context) + "/$packageName" + return getDownloadDirectory(context) + "/Downloads/$packageName" } private fun getVersionDirectory( @@ -59,11 +63,11 @@ object PathUtil { } fun getExternalPath(): String { - return Environment.getExternalStorageDirectory().toString() + "/Aurora/" + return Environment.getExternalStorageDirectory().toString() + "/Aurora/Store" } fun getBaseCopyDirectory(): String { - return "${getExternalPath()}/files/export/" + return "${getExternalPath()}/Exports/" } private fun getObbDownloadPath(context: Context, app: App): String { diff --git a/app/src/main/java/com/aurora/store/util/Preferences.kt b/app/src/main/java/com/aurora/store/util/Preferences.kt index c539146b5..37ebc66b1 100644 --- a/app/src/main/java/com/aurora/store/util/Preferences.kt +++ b/app/src/main/java/com/aurora/store/util/Preferences.kt @@ -43,6 +43,7 @@ object Preferences { const val INSTALLATION_ABANDON_SESSION = "INSTALLATION_ABANDON_SESSION" const val PREFERENCE_DOWNLOAD_ACTIVE = "PREFERENCE_DOWNLOAD_ACTIVE" + const val PREFERENCE_DOWNLOAD_EXTERNAL = "PREFERENCE_DOWNLOAD_EXTERNAL" const val PREFERENCE_DOWNLOAD_WIFI = "PREFERENCE_DOWNLOAD_WIFI" diff --git a/app/src/main/java/com/aurora/store/util/extensions/Commons.kt b/app/src/main/java/com/aurora/store/util/extensions/Commons.kt index f0ee7dbe0..22b31ce3a 100644 --- a/app/src/main/java/com/aurora/store/util/extensions/Commons.kt +++ b/app/src/main/java/com/aurora/store/util/extensions/Commons.kt @@ -21,6 +21,7 @@ package com.aurora.store.util.extensions import android.os.Build import android.text.format.DateFormat +import androidx.annotation.RequiresApi import java.util.* fun Long.toDate(): String { @@ -43,4 +44,8 @@ fun isPAndAbove(): Boolean { fun isQAndAbove(): Boolean { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q +} + +fun isRAndAbove(): Boolean { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.R } \ No newline at end of file diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingActivity.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingActivity.kt index 7500f9c96..8534ae7d0 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingActivity.kt @@ -32,6 +32,7 @@ import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_AUTO_DELETE import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT import com.aurora.store.util.Preferences.PREFERENCE_DOWNLOAD_ACTIVE +import com.aurora.store.util.Preferences.PREFERENCE_DOWNLOAD_EXTERNAL import com.aurora.store.util.Preferences.PREFERENCE_FILTER_FDROID import com.aurora.store.util.Preferences.PREFERENCE_FILTER_GOOGLE import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID @@ -149,13 +150,14 @@ class OnboardingActivity : BaseActivity() { /*Downloader*/ save(PREFERENCE_DOWNLOAD_ACTIVE, 3) + save(PREFERENCE_DOWNLOAD_EXTERNAL, false) /*Theme*/ save(PREFERENCE_THEME_TYPE, 0) save(PREFERENCE_THEME_ACCENT, 0) /*Installer*/ - save(PREFERENCE_AUTO_DELETE, false) + save(PREFERENCE_AUTO_DELETE, true) save(PREFERENCE_INSTALLER_ID, 0) } diff --git a/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt b/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt index f3d93f60d..94b1d94c0 100644 --- a/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt +++ b/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt @@ -34,7 +34,6 @@ import com.aurora.store.data.providers.BlacklistProvider import com.aurora.store.databinding.SheetAppMenuBinding import com.aurora.store.util.ApkCopier import com.aurora.store.util.PackageUtil -import com.aurora.store.util.extensions.isQAndAbove import com.aurora.store.util.extensions.openInfo import com.aurora.store.util.extensions.toast import com.livinglifetechway.quickpermissions_kotlin.runWithPermissions @@ -87,11 +86,6 @@ class AppMenuSheet : BaseBottomSheet() { menu.findItem(R.id.action_uninstall).isVisible = installed menu.findItem(R.id.action_local).isVisible = installed - if (isQAndAbove()) { - //TODO: Add Scoped Storage Access - menu.findItem(R.id.action_local).isVisible = false - } - setNavigationItemSelectedListener { item -> when (item.itemId) { R.id.action_blacklist -> { diff --git a/app/src/main/res/layout/model_editorchoice_group.xml b/app/src/main/res/layout/model_editorchoice_group.xml index a1319077f..050a013fa 100644 --- a/app/src/main/res/layout/model_editorchoice_group.xml +++ b/app/src/main/res/layout/model_editorchoice_group.xml @@ -27,6 +27,7 @@ android:orientation="horizontal"> "This setting will be applied after you restart the app" "Maximum number of active downloads" "Active download" + "User external storage" + "External storage will be used for downloads, exports etc." "Removes F-Droid apps from app lists" "Filter F-Droid apps" "Removes all Google Apps from search results and category apps" diff --git a/app/src/main/res/xml/preferences_download.xml b/app/src/main/res/xml/preferences_download.xml index 1225f2e87..80ae20ac7 100644 --- a/app/src/main/res/xml/preferences_download.xml +++ b/app/src/main/res/xml/preferences_download.xml @@ -20,6 +20,13 @@ + +