如何在没有新意图的情况下清除活动堆栈

时间:2012-08-09 08:49:11

标签: android twitter4j

让我详细说明问题。我在我的应用程序中使用twitter4j。它运行良好,您知道Intent.ACTION_VIEW正在回调Activity中的onNewIntent方法。

我很满意这样的回调:

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    final Uri uri = intent.getData();
    if (uri != null && uri.getScheme().equals(Constants.OAUTH_CALLBACK_SCHEME)) {
        Log.d("TAG", "Twitter callback -> New Intent");
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        new RetrieveAccessTokenTask(this,consumer, provider, prefs). execute(uri);
    }
}

在按下后退按钮之前,一切都还可以。当我按下活动时返回包含授权页面的网页。

有没有办法清除活动堆栈onNewIntent?我不想将同一个Intent称为重启,也不确定是否有任何不同的出路。

更新:我正在调用auth页面:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND);

你能提出任何建议吗?

1 个答案:

答案 0 :(得分:3)

您尚未在浏览器中包含用于打开身份验证页面的代码。调用浏览器视图时设置了哪些标志?我认为这就是问题所在。

您使用的是......

Intent webIntent = new Intent(Intent.ACTION_VIEW,
                Uri.parse(token.getAuthorizationURL()));
webIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);