作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我怎样才能让 Web 浏览器调用自定义方案来启动 Activity,然后我想按下后退按钮但不返回 Web 浏览器。
我只想在调用网络浏览器然后调用我的方案启动另一个 Activity 时实现转发。当我回来时,我不会喜欢看到网络浏览器。
我应该怎么做?
Intent i = new Intent(Intent.ACTION_VIEW);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
i.setData(Uri.parse(url));
startActivity(i);
我已经添加了它,但是它不起作用!
最佳答案
正如其他用户所解释的,您的 Activity 是在浏览器的堆栈上创建的。您无法阻止浏览器在其自己的堆栈上打开,但您可以在您的应用程序上进行相同的配置。
在浏览器调用的 Activity 中,在 list 文件中添加以下内容:
android:allowTaskReparenting="true"
android:launchMode="singleTask"
这将使您的 Activity 在您的应用程序堆栈(而不是浏览器堆栈)上创建。这基本上会将您的应用程序带回前台。
android:launchMode="singleTop"将不起作用,因为只有当该 Activity 位于堆栈顶部时,它才会阻止创建新 Activity ,而情况并非如此,因为浏览器当前位于顶部。 android:launchMode="singleTask"将确保不会创建其他实例,无论它们是否在顶部。
如果您使用上面的配置设置 Intent.FLAG_ACTIVITY_NO_HISTORY 那么一切都应该正常工作,无论浏览器之前是否打开。在最坏的情况下,浏览器将位于堆栈底部,如果您不断回击,您最终会到达浏览器而不是退出应用程序。
关于android - 我怎样才能在 Android 中做到这一点。 Activity -> WebBrowser -> Activity,但按返回键看不到 WebBrowser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5326538/
我是一名优秀的程序员,十分优秀!