【发布时间】:2013-03-22 21:08:37
【问题描述】:
我一直在关注 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 控制台的数据存储中没有任何内容。
有没有人知道这个问题并可能指出我正确的方向?我已经在这几个小时了,我所能想到的就是其他活动没有设置“resultCode”
非常感谢任何帮助。
【问题讨论】:
-
在我看来,onResultActivity() 方法之所以没有调用,是因为您在它之前启动了活动,即注册活动。我相信你需要把这个方法 credential = GoogleAccountCredential.usingAudience(this,"server:client_id:" + WEB_CLIENT_ID); startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);在注册活动中,您使用此 startActivity(intent);
-
好的,感谢您向我指出,在我获得凭据之前,我还有另一项活动开始了。我现在对本教程有透视。我仍然遇到问题,但至少现在正在调用 onActivityResult 方法。
-
您不应该开始一个活动,然后继续在
onCreate中添加更多代码。你必须想办法做startActivity(intent)
标签: android google-app-engine cloud endpoints