我可以在一个Android活动中有两个onNewIntent()吗?

时间:2011-11-08 17:49:13

标签: android android-activity lifecycle

我使用linkedin和twitter登录我的应用程序。这两个客户端通过webview传递并返回我的应用程序(我使用onNewIntent()从它们获取数据)。问题是:我在一个活动中不能有两个onNewIntent()..如何在同一个活动中同时执行这两个操作?

这是我的代码:

    @Override
protected void onNewIntent1(Intent intent2) {
    super.onNewIntent(intent2);
    Uri uri = intent2.getData();
    try {
        String verifier = uri.getQueryParameter("oauth_verifier");
        AccessToken accessToken = twitter.getOAuthAccessToken(requestToken,
                verifier);
        String token = accessToken.getToken(), secret = accessToken
                .getTokenSecret();

        System.out.println("ACCESSSSSSSS"+accessToken+token);
    } catch (TwitterException ex) {
        Log.e("Main.onNewIntent", "" + ex.getMessage());
    }

}


@Override
protected void onNewIntent(Intent intent) {

    String verifier = intent.getData().getQueryParameter("oauth_verifier");

    LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(liToken, verifier);
    client = factory.createLinkedInApiClient(accessToken);
    client.postNetworkUpdate("LinkedIn Android app test");

    Person p = client.getProfileForCurrentUser(EnumSet.of(ProfileField.FIRST_NAME, ProfileField.LAST_NAME, ProfileField.ID));

    System.out.println("Token  "+accessToken.getToken());       
    System.out.println("Secret  "+accessToken.getTokenSecret());
    System.out.println("NOM: "+p.getLastName() + ", PRENOM: " + p.getFirstName());

    String user_id = p.getId();
    String first_name = p.getFirstName();
    String last_name = p.getLastName();
    String oauth_token = accessToken.getToken();
    String oauth_token_secret = accessToken.getTokenSecret();

    //Verification du login/password
    new LoginLinkedin().execute(user_id,oauth_token,oauth_token_secret,first_name,last_name);

    }

1 个答案:

答案 0 :(得分:2)

你不能这样做。因为必须从父类重写onNewIntent,系统才会“看到”实际覆盖父方法的onNewIntent。上面的代码应该导致错误,因为在onNewIntent1上使用@Override方法无效。

您需要做的是通过观察其当前数据然后运行推特或链接代码来确定意图的来源。这种观察应该在一个统一的onNewIntent方法中进行。