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 中的外部链接返回
如何关闭从我的应用启动的外部应用(如 Instagram)并返回触发应用?