在android中调用Intent.ACTION_VIEW后返回

问题描述 投票:0回答:4

我的应用程序有 3 个活动 A、B、C。活动 A 调用 B。在 B 中,我调用 Intent.ACTION_VIEW 与 Twitter 进行身份验证,如下所示:

public static void DoAuthen(Context context, String CallBackUrl) throws OAuthMessageSignerException, OAuthNotAuthorizedException,
        OAuthExpectationFailedException, OAuthCommunicationException {
    httpOauthConsumer = new CommonsHttpOAuthConsumer(context.getString(R.string.Twitter_ConsumerKey), context
            .getString(R.string.Twitter_ConsumerSecret));
    httpOauthprovider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", "http://twitter.com/oauth/access_token",
            "http://twitter.com/oauth/authorize");
    String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, CallBackUrl);
    context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
}

身份验证后,我的应用程序在 Activity B 处回调。这里 B 调用 C。 现在,如果我按“后退”按钮,它将导航到浏览器(之前用于通过 Twitter 进行身份验证),而不是先导航到 B,然后导航到 A。 我该如何解决这个问题?

android android-intent twitter-oauth twitter4j
4个回答
9
投票

请参考android中的任务和返回堆栈。您可以在应用程序中使用两个任务 - 第一个任务是执行您的业务,第二个任务是授权。您可以使用意图标志FLAG_ACTIVITY_NEW_TASK开始授权并使用参数android:clearTaskOnLaunch。祝你好运!


1
投票

我在 ACTION_VIEW 意图中添加了以下标志,它解决了返回浏览器的问题

consumer = new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
provider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token",
                    "http://twitter.com/oauth/access_token",
                    "http://twitter.com/oauth/authorize");
String authUrl = provider.retrieveRequestToken(consumer, Constants.OAUTH_CALLBACK_URL);
Intent oauthIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));        
oauthIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
oauthIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
oauthIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);

0
投票

在 C 中,您可以覆盖后退按钮直接转到 B

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        startActivity(C.this,B.class);
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

0
投票

了解法律背景下的意图

意图是法律领域的一个重要概念,决定着法律诉讼中的罪责确定和后果的严重程度。在法律术语中,意图是指个人实施某种行为的心理状态。它深入研究某项行为背后的动机,以及该行为是否是有意、有意或有特定目的而进行的。

多洛!

© www.soinside.com 2019 - 2024. All rights reserved.