android-launch 外部浏览器并使用返回按钮返回应用程序

Posted

技术标签:

【中文标题】android-launch 外部浏览器并使用返回按钮返回应用程序【英文标题】:android-launch external browser and come back to the app with back button 【发布时间】:2020-09-22 03:22:18 【问题描述】:

我的安卓应用中有一个Activity 和多个动态生成的Fragments。用户可以单击一个按钮,该按钮将在外部浏览器(例如谷歌浏览器)中打开一个网站。然后当用户点击后退按钮时,我希望他回到他在我的应用程序中的位置,但当前的行为是系统关闭谷歌浏览器并导航到主屏幕!

我很困惑是否必须将所有内容保存在 onSaveInstanceState(Bundle) 中,还是应该考虑在启动浏览器活动时使用标志或什么?!

附言我的应用中有 2 个Activities。启动器是一个简单的启动活动,noHistory 设置为 true,另一个 Activity 包含所有内容,包括所有片段

【问题讨论】:

这应该是开箱即用的。请在您的问题中发布您的清单,并发布您用于启动浏览器的代码。 是的!问题是 SplashActivity 及其 noHistory 属性。刚刚删除了 SplashActivity,一切正常 【参考方案1】:

我建议您查看 ChromeCustomTabs(现在在 androidX 中称为浏览器)。 只需添加此依赖项:implementation "androidx.browser:browser:1.2.0"

您可以通过以下方式打开网址:CustomTabsIntent.Builder().build().launchUrl(/* context */, /* url as Uri */) 这支持背压:)

如果您的项目中不使用 androidX,则可以改用“旧版本”ChromeCustomTabs。它以类似的方式工作,但我建议迁移到 androidX (as explained in this article)

【讨论】:

非常感谢。但是如果我想打开phone app 然后用返回按钮回到我的应用程序怎么办?我的意思是把浏览器看作一个例子 所以您的意思是:您的应用程序已打开 -> 用户进入主屏幕 -> 打开手机应用程序 -> 按下 -> 他将登陆主屏幕。但是您希望他再次登陆您的应用程序?我认为这是不可能的 不,我的意思是当他点击我应用中的按钮时,我会打开手机应用,然后我希望他通过返回按钮回到他在我应用中的位置 嗯,好的。所以我刚刚创建了一个新项目,它只在按钮单击时调用一个数字,如果呼叫结束或我按下回,我将按预期返回应用程序。在 onClick 里面我只是这样做:Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "0000")); MainActivity.this.startActivity(intent); 感谢您的测试!问题是 SplashActivity 及其 noHistory 属性。刚刚删除了 SplashActivity,一切正常

以上是关于android-launch 外部浏览器并使用返回按钮返回应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iPhone 应用程序的 webview 中的外部链接返回

如何在python中调用外部程序并检索输出和返回代码?

如何关闭从我的应用启动的外部应用(如 Instagram)并返回触发应用?

运行外部 .exe 并从中接收返回值

CORS 预检返回 200,但随后的 PUT 从未发生(带有外部 REST API 的 Angular JS)

JQuery:遍历元素并设置为外部范围的变量