2012-08-09 78 views
3

让我用细节清除问题。我在我的应用程序中使用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); 
    } 
} 

一切进展顺利。当我按下活动返回包含授权页面的网页时。

有什么方法可以清除Activity栈onNewIntent?我不想将同一个Intent称为重新启动,并且不确定任何不同的出路。

更新:我打电话这样的身份验证页面:

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); 

你能给什么建议?

回答

3

您没有在浏览器中打开验证页面的代码。调用浏览器视图时设置了哪些标志?我认为这是你的问题所在。

是否使用类似...

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

更新我的答案,什么是错的标志?谢谢btw。 – Martin 2012-08-09 09:18:25

+1

我认为问题可能是其他标志被设置。你想创建一个新的意图,而不是使用已经在后台运行的浏览器。尝试删除SINGLE_TOP和FROM_BACKGROUND。然后,您可以一次将它们添加回来,以确定哪个问题导致问题。 – 2012-08-09 10:17:31

+0

谢谢菲尔,我删除了两个并解决了这个问题。 – Martin 2012-08-09 11:02:08