如何在返回调用活动时关闭浏览器活动?

4
我有这样的情况。我有一个Activity A,它发送一个意图来创建Activity B,它是一个浏览器,用用户的Twitter帐户进行身份验证。当凭据被提交时,控制权再次返回到Activity A,我可以继续浏览应用程序。但是,如果用户离开应用程序,浏览器活动将被恢复,迫使用户关闭浏览器。
问题是,我想在获取身份验证凭据后从堆栈中删除浏览器活动。
你知道这是否可能吗?由于身份验证需要在浏览器中进行,我不能使用startActivityForResult,我对该活动没有任何控制。非常感谢。
编辑:
我是这样启动活动的:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)).setFlags(Intent.FILL_IN_ACTION));
1个回答

1
也许你可以在Activity B的OnResume()方法中加入一些代码,检查是否是Activity B的第一次启动,如果不是,则自动关闭它?
更新:你也可以使用AsyncTask将凭证信息发布到网站上,使用DefaultHttpClient和HttpPost。不幸的是,在这种情况下我只用过HttpGet,但有一些代码here可能会有用。

抱歉Dan,我无法控制Activity B(Android浏览器)。因此,在调用Activity B之前或之后,我只能采取任何操作。有没有办法访问Android上的活动堆栈? - lblasa
抱歉 - 没有注意到你正在使用实际浏览器。我猜另一种选择是在你的 Activity A 中作为另一个线程浏览/身份验证,而不是使用浏览器应用程序。我已经使用 AsyncTask 作为内部类做过类似的事情。 - Dan O
你有没有使用 WebView?手头上有例子吗? - lblasa
嗯,我明白了。然而,我认为我可能无法采取这种方法,因为用户需要进入网页(Twitter)来输入凭据。我想我可以要求凭据并将数据发布到网页上;但我认为在这种特殊情况下这不是一个选项。无论如何,谢谢,我使用自定义活动解决了这个问题,它显示了一个WebView。 - lblasa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接