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

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

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

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

【问题讨论】:

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

标签: android android-activity fragment


【解决方案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,一切正常
猜你喜欢
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多