我一直在关注 Google 的 App Engine 连接 Android 项目教程,但我陷入了 this page 的困境。 .
特别是在第 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 控制台的数据存储中没有任何内容。
有人知道这个问题并可能为我指出正确的方向吗?我已经这样做了几个小时,我所能想到的就是其他 Activity 没有设置“resultCode”有问题
非常感谢任何帮助。
最佳答案
您将同时启动两项 Activity :RegisterActivity
和 Google 帐户选择器 Activity 。 RegisterActivity
的调用方式永远不会触发返回到 onActivityResult()
函数。
所以,你要做的第一件事就是改变这一点:
startActivity(intent);
对此:
startActivityForResult(intent, REQUEST_REGISTER);
您必须创建新请求REQUEST_REGISTER
。
这是因为 startActivity()
永远不会触发返回到 onActivityResult()
。只有 startActivityForResult()
可以做到这一点。这就是 Android 的工作方式。
其次,我觉得两个 Activity 同时启动很奇怪。您必须非常仔细地研究这样做的逻辑。我强烈怀疑您想要按顺序启动这两个 Activity 。我不知道应该先哪个。
像您已经在做的那样在onCreate()
中启动第一个(但如果它是RegisterActivity
,请确保使用startActivityForResult()
)。
如果 REQUEST_*
requestCode
与发送的 requestCode
匹配,则在 onActivityResult()
中启动第二个 Activity到第一个 Activity 的 startActivityForResult()
。
这可能会解决您的问题,让 Google 帐户选择器、注册和返回 Activity 都能正常工作。
关于android - 调用 GoogleAccountCredential.newChooseAccountIntent() 后未调用 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579859/