如何在返回我的活动时“关闭”Webview?

时间:2012-01-31 06:19:35

标签: android oauth

从我的应用程序进行身份验证后,会显示一个新窗口,稍后会重定向回应用程序。然后在我的活动中调用onNewIntent()。但是当选择回到我的应用程序时,Twitter网页仍会显示。不应显示带有重定向回应用程序的Twitter页面。如何关闭Twitter网页视图?

3 个答案:

答案 0 :(得分:0)

我从我的活动中调用此方法

public void askOAuth(Context context,Handler handler) {
    _msg = new Message();
    _msg.arg1 = AUTHORISE_TWITTER_APP;
    mContext=context;
    this.handler=handler;
    consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET);
    provider = new DefaultOAuthProvider(
        "http://twitter.com/oauth/request_token",
        "http://twitter.com/oauth/access_token",
        "http://twitter.com/oauth/authorize");//
    //provider.setOAuth10a(true);
    String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
    mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
}

这会打开一个Web视图(重定向回我的活动的Twitter页面)。 在此之后它会调用onNewIntent()我的活动和活动的功能,但是当我按下后退按钮然后它再次显示Twitter页面。现在我的问题是如何关闭该推特页面

答案 1 :(得分:0)

我的建议是 NOT 在新的网络浏览器窗口中启动“authURL”。我个人喜欢做的是启动一个包含WebView的新Activity,并将URL传递给该Activity。这样,您可以更轻松地在Oauth身份验证过程中管理应用内的导航。所以不要这样做:

String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));

我会这样做:

Intent intent = new Intent(mContext, YourActivityWithAWebView.class);
intent.putExtra("AUTH_URL", authUrl);
startActivity(intent);

然后,在您的WebView中,您可以使用shouldOverrideUrlLoading()方法获取VERIFIER URL并检索您的Oauth Verifier。

希望这有帮助!

答案 2 :(得分:-1)

新窗口是活动吗?如果是这样,请从您的主要活动中调用startActivityForResult()并实施回调。

当您的回调被触发时,您可以根据需要重新加载您的网页浏览。

您还可以重新构建您的应用,以便主要活动的onCreate()足够聪明,不会在网络视图中显示旧结果。