diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt
index cacab1379..312d0e959 100644
--- a/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt
+++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt
@@ -20,10 +20,17 @@ class AppLinksFragment : Fragment(R.layout.fragment_app_links) {
private val binding get() = _binding!!
private val playStoreDomain = "play.google.com"
+ private val marketDomain = "market.android.com"
+
+ // AppLink buttons
+ private var buttons = mapOf(
+ playStoreDomain to binding.playStoreButton,
+ marketDomain to binding.marketButton
+ )
private val startForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
- if (isSAndAbove() && playStoreDomainVerified()) {
+ if (isSAndAbove() && buttons.keys.any { domainVerified(it) }) {
toast(R.string.app_link_enabled)
}
updateButtonState()
@@ -35,38 +42,45 @@ class AppLinksFragment : Fragment(R.layout.fragment_app_links) {
updateButtonState()
if (isSAndAbove()) {
- binding.btnAction.setOnClickListener {
- val intent = Intent(
- ACTION_APP_OPEN_BY_DEFAULT_SETTINGS,
- Uri.parse("package:${view.context.packageName}")
- )
- startForResult.launch(intent)
+ buttons.values.forEach {
+ it.setOnClickListener {
+ val intent = Intent(
+ ACTION_APP_OPEN_BY_DEFAULT_SETTINGS,
+ Uri.parse("package:${view.context.packageName}")
+ )
+ startForResult.launch(intent)
+ }
}
}
}
override fun onDestroyView() {
+ buttons = emptyMap()
_binding = null
super.onDestroyView()
}
private fun updateButtonState() {
if (isSAndAbove()) {
- if (playStoreDomainVerified()) {
- binding.btnAction.apply {
+ buttons.forEach { (domain, button) ->
+ if (domainVerified(domain)) {
+ button.apply {
+ text = getString(R.string.action_enabled)
+ isEnabled = false
+ }
+ }
+ }
+ } else {
+ buttons.forEach { (_, button) ->
+ button.apply {
text = getString(R.string.action_enabled)
isEnabled = false
}
}
- } else {
- binding.btnAction.apply {
- text = getString(R.string.action_enabled)
- isEnabled = false
- }
}
}
- private fun playStoreDomainVerified(): Boolean {
+ private fun domainVerified(domain: String): Boolean {
return if (isSAndAbove()) {
val domainVerificationManager = requireContext().getSystemService(
DomainVerificationManager::class.java
@@ -75,8 +89,8 @@ class AppLinksFragment : Fragment(R.layout.fragment_app_links) {
requireContext().packageName
)
- val playStoreDomain = userState?.hostToStateMap?.filterKeys { it == playStoreDomain }
- playStoreDomain?.values?.first() == DomainVerificationUserState.DOMAIN_STATE_SELECTED
+ val domainMap = userState?.hostToStateMap?.filterKeys { it == domain }
+ domainMap?.values?.first() == DomainVerificationUserState.DOMAIN_STATE_SELECTED
} else {
true
}
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 e8c5c437c..0f3ce65e5 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
@@ -90,7 +90,7 @@ class SplashFragment : BaseFragment(R.layout.fragment_splash) {
}
AuthState.Valid -> {
- val packageName = requireArguments().getString("packageName") ?: ""
+ val packageName = getPackageName()
if (packageName.isBlank()) {
navigateToDefaultTab()
} else {
@@ -110,7 +110,7 @@ class SplashFragment : BaseFragment(R.layout.fragment_splash) {
}
AuthState.SignedIn -> {
- val packageName = requireArguments().getString("packageName") ?: ""
+ val packageName = getPackageName()
if (packageName.isBlank()) {
navigateToDefaultTab()
} else {
@@ -216,4 +216,13 @@ class SplashFragment : BaseFragment(R.layout.fragment_splash) {
}
findNavController().navigate(directions)
}
+
+ private fun getPackageName(): String {
+ // Navigation component cannot handle market scheme as its missing a valid host
+ return if (activity?.intent != null && activity?.intent?.scheme == "market") {
+ requireActivity().intent.data!!.getQueryParameter("id") ?: ""
+ } else {
+ requireArguments().getString("packageName") ?: ""
+ }
+ }
}
diff --git a/app/src/main/res/layout/fragment_app_links.xml b/app/src/main/res/layout/fragment_app_links.xml
index 99be965b9..f771869d5 100644
--- a/app/src/main/res/layout/fragment_app_links.xml
+++ b/app/src/main/res/layout/fragment_app_links.xml
@@ -37,6 +37,7 @@
app:layout_constraintTop_toBottomOf="@+id/appCompatTextView2" />
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index ace963c6b..f07ea06f9 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -315,6 +315,14 @@
android:name="packageName"
android:defaultValue=""
app:argType="string" />
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9b82e74ed..1c8ac194f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -378,4 +378,6 @@
App link enabled!
play.google.com
Google Play, also known as the Google Play Store and formerly Android Market.
-
\ No newline at end of file
+ market.android.com
+ Android Market was an online store offering software applications designed for Android devices, retired in 2017.
+