diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 18efb63ed..291237143 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -9,13 +9,21 @@ import android.os.Bundle import android.util.AttributeSet import android.view.View import androidx.appcompat.app.AppCompatActivity +import androidx.navigation.fragment.NavHostFragment import mozilla.components.concept.engine.EngineView +import mozilla.components.feature.intent.IntentProcessor +import mozilla.components.support.utils.SafeIntent +import org.mozilla.fenix.browser.BrowserFragment import org.mozilla.fenix.ext.components open class HomeActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) + + if (intent?.extras?.getBoolean(OPEN_TO_BROWSER) == true) { + openToBrowser() + } } override fun onCreateView( @@ -38,4 +46,17 @@ open class HomeActivity : AppCompatActivity() { super.onBackPressed() } + + private fun openToBrowser() { + val sessionId = SafeIntent(intent).getStringExtra(IntentProcessor.ACTIVE_SESSION_ID) + val host = supportFragmentManager.findFragmentById(R.id.container) as NavHostFragment + + host.navController.navigate(R.id.action_global_browser, Bundle().apply { + putString(BrowserFragment.SESSION_ID, sessionId) + }) + } + + companion object { + const val OPEN_TO_BROWSER = "open_to_browser" + } } diff --git a/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt b/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt index d703a9102..907c34adb 100644 --- a/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt @@ -18,15 +18,28 @@ class IntentReceiverActivity : Activity() { super.onCreate(savedInstanceState) components.utils.intentProcessor.process(intent) + var openToBrowser = false val intent = Intent(intent) - if (CustomTabConfig.isCustomTabIntent(SafeIntent(intent))) { - intent.setClassName(applicationContext, CustomTabActivity::class.java.name) - } else { - intent.setClassName(applicationContext, HomeActivity::class.java.name) + openToBrowser = when { + CustomTabConfig.isCustomTabIntent(SafeIntent(intent)) -> { + intent.setClassName(applicationContext, CustomTabActivity::class.java.name) + true + } + intent.action == Intent.ACTION_VIEW -> { + intent.setClassName(applicationContext, HomeActivity::class.java.name) + true + } + else -> { + intent.setClassName(applicationContext, HomeActivity::class.java.name) + false + } } + intent.putExtra(HomeActivity.OPEN_TO_BROWSER, openToBrowser) + startActivity(intent) + finish() } } diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt index 72e03204d..d42a1c4f2 100644 --- a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt @@ -4,23 +4,6 @@ package org.mozilla.fenix.customtabs -import android.os.Bundle -import androidx.navigation.fragment.NavHostFragment -import mozilla.components.feature.intent.IntentProcessor -import mozilla.components.support.utils.SafeIntent import org.mozilla.fenix.HomeActivity -import org.mozilla.fenix.R -import org.mozilla.fenix.browser.BrowserFragment -class CustomTabActivity : HomeActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - val sessionId = SafeIntent(intent).getStringExtra(IntentProcessor.ACTIVE_SESSION_ID) - val host = supportFragmentManager.findFragmentById(R.id.container) as NavHostFragment - - host.navController.navigate(R.id.action_global_browser, Bundle().apply { - putString(BrowserFragment.SESSION_ID, sessionId) - }) - } -} +class CustomTabActivity : HomeActivity()