Android 调用GoogleAccountCredential.newChooseAccountContent()后未调用onActivityResult

Android 调用GoogleAccountCredential.newChooseAccountContent()后未调用onActivityResult,android,google-app-engine,cloud,endpoints,Android,Google App Engine,Cloud,Endpoints,我一直在关注谷歌关于一个应用引擎连接的Android项目的教程,现在我陷入了困境 特别是在第8c节中,似乎有一个错误。如标题所述,以下代码中未调用onActivityResult方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //

我一直在关注谷歌关于一个应用引擎连接的Android项目的教程,现在我陷入了困境

特别是在第8c节中,似乎有一个错误。如标题所述,以下代码中未调用onActivityResult方法

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Start up RegisterActivity right away
    Intent intent = new Intent(this, RegisterActivity.class);
    startActivity(intent);

    credential = GoogleAccountCredential.usingAudience(this,"server:client_id:" + WEB_CLIENT_ID);
    startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
    System.out.println("onCreate finished");
    //new EndpointsTask().execute(getApplicationContext());
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
    case REQUEST_ACCOUNT_PICKER:
        if (data != null && data.getExtras() != null) {

            accountName = data.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME);
            if (accountName != null) {
                credential.setSelectedAccountName(accountName);
                new EndpointsTask().execute(getApplicationContext());
            }
        }
        break;
    }
在我注意到AsyncTask没有被执行并且GAE控制台中的数据存储中没有任何结果之前,一切都进展顺利

有没有人意识到这个问题,也许能给我指出正确的方向?我已经做了几个小时了,我所能想到的就是其他活动没有设置“resultCode”有问题


非常感谢您的帮助。

您将同时启动两项活动:
注册活动
和Google帐户选择器活动。调用
RegisterActivity
时,它将永远不会触发返回您的
onActivityResult()
函数

所以,你首先要做的是改变这一点:

startActivity(intent);
为此:

startActivityForResult(intent, REQUEST_REGISTER);
您必须创建新的请求
请求\u寄存器

这是因为
startActivity()
从不触发返回到
onActivityResult()
。只有
startActivityForResult()
可以这样做。这就是安卓的工作方式

第二,我觉得这两项活动同时开始很奇怪。你必须非常仔细地观察为什么要这样做的逻辑。我强烈怀疑你想按顺序开始这两项活动。我不知道哪一个应该先去

onCreate()
中启动第一个,就像您已经在做的那样(但是如果是
RegisterActivity
,请确保使用
startActivityForResult()

如果
请求*
请求代码
与第一个活动发送到
startActivityForResult()
请求代码
匹配,则在
onActivityResult()中启动第二个活动


这可能会解决您的问题,使Google帐户选择器、注册和返回活动都能正常工作。

在我看来,之所以不调用onResultActivity()方法,是因为您在注册活动之前启动了活动。我认为您需要将这个方法credential=GoogleAccountCredential.usingAudience(这个,“服务器:客户机id:+WEB客户机id”);startActivityForResult(credential.newChooseAccountContent(),请求\帐户\选择器);在注册活动中,您使用此startActivity(意图)启动它;好的,伙计们,谢谢你们告诉我,在我拿到证书之前,我还有一个活动要开始。我现在对本教程有了深入的了解。我仍然有问题,但至少现在正在调用onActivityResult方法。您不应该启动一个活动,然后继续在
onCreate
中添加更多代码。您必须找到另一种方法来执行
startActivity(intent)