SplashFragment: Handle SHOW_APP_INFO intents

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-03-21 11:52:12 +08:00
parent c458aa2afe
commit 57f29ff094
2 changed files with 28 additions and 15 deletions

View File

@@ -100,6 +100,9 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" /> <data android:mimeType="text/plain" />
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="android.intent.action.SHOW_APP_INFO" />
</intent-filter>
<nav-graph android:value="@navigation/mobile_navigation" /> <nav-graph android:value="@navigation/mobile_navigation" />
</activity> </activity>

View File

@@ -37,6 +37,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.aurora.extensions.hide import com.aurora.extensions.hide
import com.aurora.extensions.isMAndAbove import com.aurora.extensions.isMAndAbove
import com.aurora.extensions.isNAndAbove
import com.aurora.extensions.navigate import com.aurora.extensions.navigate
import com.aurora.extensions.show import com.aurora.extensions.show
import com.aurora.gplayapi.helpers.AuthHelper import com.aurora.gplayapi.helpers.AuthHelper
@@ -127,8 +128,8 @@ class SplashFragment : BaseFragment<FragmentSplashBinding>() {
} }
AuthState.Valid -> { AuthState.Valid -> {
val packageName = getPackageName() val packageName = getPackageName(requireActivity().intent)
if (packageName.isBlank()) { if (packageName.isNullOrBlank()) {
navigateToDefaultTab() navigateToDefaultTab()
} else { } else {
requireArguments().remove("packageName") requireArguments().remove("packageName")
@@ -151,8 +152,8 @@ class SplashFragment : BaseFragment<FragmentSplashBinding>() {
} }
AuthState.SignedIn -> { AuthState.SignedIn -> {
val packageName = getPackageName() val packageName = getPackageName(requireActivity().intent)
if (packageName.isBlank()) { if (packageName.isNullOrBlank()) {
navigateToDefaultTab() navigateToDefaultTab()
} else { } else {
requireArguments().remove("packageName") requireArguments().remove("packageName")
@@ -261,17 +262,26 @@ class SplashFragment : BaseFragment<FragmentSplashBinding>() {
findNavController().navigate(directions) findNavController().navigate(directions)
} }
private fun getPackageName(): String { private fun getPackageName(intent: Intent): String? {
// Navigation component cannot handle market scheme as its missing a valid host return when {
return if (requireActivity().intent != null && requireActivity().intent.scheme == "market") { intent.action == Intent.ACTION_VIEW -> {
requireActivity().intent.data!!.getQueryParameter("id") ?: "" 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") ?: "" intent.action == Intent.ACTION_SEND -> {
} else if (requireActivity().intent != null && requireActivity().intent.extras != null) { val clipData = intent.getStringExtra(Intent.EXTRA_TEXT) ?: ""
requireActivity().intent.extras?.getString("packageName") ?: "" UrlQuerySanitizer(clipData).getValue("id")
} else { }
requireArguments().getString("packageName") ?: ""
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")
} }
} }