From baaac896629e217b3ccbdb18374ece4ddf29309a Mon Sep 17 00:00:00 2001 From: Rahul Patel Date: Thu, 28 Nov 2024 22:49:14 +0530 Subject: [PATCH] Restart app post onboarding --- app/build.gradle.kts | 2 ++ .../store/data/providers/PermissionProvider.kt | 5 ++--- .../view/ui/onboarding/OnboardingFragment.kt | 10 +++++----- app/src/main/res/values/strings.xml | 1 + gradle/libs.versions.toml | 16 +++++++++------- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8eca46138..1317e4bab 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -212,6 +212,8 @@ dependencies { implementation(libs.androidx.room.ktx) implementation(libs.androidx.room.runtime) + implementation(libs.process.phoenix) + // LeakCanary debugImplementation(libs.squareup.leakcanary.android) } diff --git a/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt b/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt index cd228e646..aa0ad0e2d 100644 --- a/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt +++ b/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt @@ -24,7 +24,6 @@ import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.model.PermissionType import com.aurora.store.util.PackageUtil -import com.aurora.store.util.PathUtil class PermissionProvider(private val fragment: Fragment) : ActivityResultCallback { @@ -74,7 +73,7 @@ class PermissionProvider(private val fragment: Fragment) : if (!isGranted(PermissionType.INSTALL_UNKNOWN_APPS)) { context.toast(R.string.toast_permission_installer_required) } else { - context.toast(R.string.toast_permission_esm_caution) + context.toast(R.string.toast_permission_esm_restart) intentLauncher.launch(intent) } } else { @@ -93,7 +92,7 @@ class PermissionProvider(private val fragment: Fragment) : return when (permissionType) { PermissionType.EXTERNAL_STORAGE, PermissionType.STORAGE_MANAGER -> { - context.isExternalStorageAccessible() && PathUtil.canReadWriteOBB(context) + context.isExternalStorageAccessible() } PermissionType.INSTALL_UNKNOWN_APPS -> PackageUtil.canRequestPackageInstalls(context) diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt index 85e46d401..43d458aa8 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt @@ -26,7 +26,6 @@ import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle -import androidx.navigation.fragment.findNavController import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import com.aurora.Constants @@ -58,6 +57,7 @@ import com.aurora.store.util.Preferences.PREFERENCE_VENDING_VERSION import com.aurora.store.util.save import com.aurora.store.view.ui.commons.BaseFragment import com.google.android.material.tabs.TabLayoutMediator +import com.jakewharton.processphoenix.ProcessPhoenix import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @@ -153,10 +153,10 @@ class OnboardingFragment : BaseFragment() { private fun finishOnboarding() { setupAutoUpdates() CacheWorker.scheduleAutomatedCacheCleanup(requireContext()) - save(PREFERENCE_INTRO, true) - findNavController().navigate( - OnboardingFragmentDirections.actionOnboardingFragmentToSplashFragment() - ) + Preferences.putBooleanNow(requireContext(), PREFERENCE_INTRO, true) + + // Restart the app to ensure all permissions are granted + ProcessPhoenix.triggerRebirth(context) } private fun loadDefaultPreferences() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e5c48aaa6..8c931f503 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -300,6 +300,7 @@ "Permission granted" "You need to grant Installer Permission first" "You may have to re-grant the permission due to bug in Storage Access Framework" + "You may have to restart app to reflect the permission grant." Device spoof applied. "App purchases not available on Anonymous accounts." "The version code you are requesting is unavailable." diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e2cd56b0a..94cb8f125 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -24,6 +24,7 @@ materialVersion = "1.12.0" navVersion = "2.8.4" okhttpVersion = "4.12.0" preferenceVersion = "1.2.1" +processPhoenix = "3.0.0" protobufJavaliteVersion = "4.28.3" rikkaHiddenVersion = "4.3.3" rikkaToolsVersion = "4.4.0" @@ -79,6 +80,7 @@ hilt-androidx-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = hilt-androidx-work = { module = "androidx.hilt:hilt-work", version.ref = "hiltWorkVersion" } junit = { module = "junit:junit", version.ref = "junit" } lsposed-hiddenapibypass = { module = "org.lsposed.hiddenapibypass:hiddenapibypass", version.ref = "hiddenapibypassVersion" } +process-phoenix = { module = "com.jakewharton:process-phoenix", version.ref = "processPhoenix" } rikka-hidden-stub = { module = "dev.rikka.hidden:stub", version.ref = "rikkaHiddenVersion" } rikka-shizuku-api = { module = "dev.rikka.shizuku:api", version.ref = "shizukuVersion" } rikka-shizuku-provider = { module = "dev.rikka.shizuku:provider", version.ref = "shizukuVersion" } @@ -88,11 +90,11 @@ squareup-okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhtt [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } -androidx-navigation = { id = "androidx.navigation.safeargs.kotlin", version.ref = "navVersion" } -google-ksp = { id = "com.google.devtools.ksp", version.ref = "kspVersion" } -hilt-android-plugin = { id = "com.google.dagger.hilt.android", version.ref = "hiltVersion" } -ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlintVersion" } -jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlinVersion" } +androidx-navigation = { id = "androidx.navigation.safeargs.kotlin", version.ref = "navVersion" } +google-ksp = { id = "com.google.devtools.ksp", version.ref = "kspVersion" } +hilt-android-plugin = { id = "com.google.dagger.hilt.android", version.ref = "hiltVersion" } +ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlintVersion" } +jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlinVersion" } jetbrains-kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlinVersion" } -jetbrains-kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlinVersion" } -rikka-tools-refine-plugin = { id = "dev.rikka.tools.refine", version.ref = "rikkaToolsVersion" } +jetbrains-kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlinVersion" } +rikka-tools-refine-plugin = { id = "dev.rikka.tools.refine", version.ref = "rikkaToolsVersion" }