我怎么能这样做Web浏览器调用自定义方案来启动一个活动,然后我想按下后退按钮但不返回Web浏览器.
我只想在调用Web浏览器时实现转发,然后调用我的方案来启动另一个Activity.当我回来时,我不想看到网络浏览器.
我该怎么办?
Intent i = new Intent(Intent.ACTION_VIEW);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
i.setData(Uri.parse(url));
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
我已经添加了它,但它不起作用!
正如其他用户所解释的那样,您的Activity正在浏览器的堆栈上创建.您无法阻止浏览器在其自己的堆栈上打开,但您可以在应用程序上执行相同的配置.
在浏览器调用的活动中,在清单文件中添加以下内容:
android:allowTaskReparenting="true"
android:launchMode="singleTask"
Run Code Online (Sandbox Code Playgroud)
这将使您的活动在您的应用程序堆栈(而不是浏览器)上创建.这基本上会使您的应用程序回到正面.
android:launchMode ="singleTop"不起作用,因为只有当该活动位于堆栈顶部时才会阻止创建新活动,而浏览器是当前位于顶部的浏览器不是这种情况.android:launchMode ="singleTask"将确保不会创建其他实例,无论它们是否在顶部.
如果您使用上面的配置设置Intent.FLAG_ACTIVITY_NO_HISTORY,那么一切都应该正常工作,无论之前是否打开过浏览器.在最坏的情况下,浏览器将位于堆栈的底部,如果您继续回击,最终会到达浏览器而不是退出应用程序.
| 归档时间: |
|
| 查看次数: |
2059 次 |
| 最近记录: |