diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e8d0cb0c8..4dd0e0db7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -100,6 +100,9 @@ + + + diff --git a/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt b/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt index 51e3f4b99..d69cbe170 100644 --- a/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt @@ -37,6 +37,7 @@ import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.aurora.extensions.hide import com.aurora.extensions.isMAndAbove +import com.aurora.extensions.isNAndAbove import com.aurora.extensions.navigate import com.aurora.extensions.show import com.aurora.gplayapi.helpers.AuthHelper @@ -127,8 +128,8 @@ class SplashFragment : BaseFragment() { } AuthState.Valid -> { - val packageName = getPackageName() - if (packageName.isBlank()) { + val packageName = getPackageName(requireActivity().intent) + if (packageName.isNullOrBlank()) { navigateToDefaultTab() } else { requireArguments().remove("packageName") @@ -151,8 +152,8 @@ class SplashFragment : BaseFragment() { } AuthState.SignedIn -> { - val packageName = getPackageName() - if (packageName.isBlank()) { + val packageName = getPackageName(requireActivity().intent) + if (packageName.isNullOrBlank()) { navigateToDefaultTab() } else { requireArguments().remove("packageName") @@ -261,17 +262,26 @@ class SplashFragment : BaseFragment() { findNavController().navigate(directions) } - private fun getPackageName(): String { - // Navigation component cannot handle market scheme as its missing a valid host - return if (requireActivity().intent != null && requireActivity().intent.scheme == "market") { - requireActivity().intent.data!!.getQueryParameter("id") ?: "" - } else if (requireActivity().intent != null && requireActivity().intent.action == Intent.ACTION_SEND) { - val clipData = requireActivity().intent.getStringExtra(Intent.EXTRA_TEXT) ?: "" - UrlQuerySanitizer(clipData).getValue("id") ?: "" - } else if (requireActivity().intent != null && requireActivity().intent.extras != null) { - requireActivity().intent.extras?.getString("packageName") ?: "" - } else { - requireArguments().getString("packageName") ?: "" + private fun getPackageName(intent: Intent): String? { + return when { + intent.action == Intent.ACTION_VIEW -> { + intent.data!!.getQueryParameter("id") + } + + intent.action == Intent.ACTION_SEND -> { + val clipData = intent.getStringExtra(Intent.EXTRA_TEXT) ?: "" + UrlQuerySanitizer(clipData).getValue("id") + } + + isNAndAbove && intent.action == Intent.ACTION_SHOW_APP_INFO -> { + intent.extras?.getString(Intent.EXTRA_PACKAGE_NAME) + } + + intent.extras != null -> { + intent.extras?.getString("packageName") + } + + else -> requireArguments().getString("packageName") } }