【问题标题】:Starting an activity after google api client connectgoogle api客户端连接后启动活动
【发布时间】:2014-07-08 06:51:43
【问题描述】:

我有一个片段,用户点击一个按钮(来自 G+ API)并使用他的 Google 服务帐户登录,到目前为止一切顺利......

问题是,当单击按钮时,它应该在登录过程完成后启动一个活动,但它只(大概)在销毁活动(可能会停止,我真的不知道)并恢复它再次因为如果我进入菜单并再次进入应用程序,第二个活动会立即开始(或者在改变方向时,这会破坏并重新创建活动)。

我知道这与 onActivityResult 生命周期方法有关,因为我的应用程序也有 facebook 登录,并且我使用了来自 facebook API 的 uiHelper,但我还没有找到用于 google api 客户端的一个(我认为它实际上不存在)。

编辑:

这是我的活动结果,如果我删除“uiHelper.onActivityresult(...)”,那么我的 Facebook 登录也会发生同样的情况。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
}

当用户登录时调用它

@Override
public void onConnected(Bundle bundle) {
    mSignInClicked = false;
    // Get user's information
    getProfileInformation();
}

这是填充我用于我的应用程序的对象的 getProfileInformation(是一个简单的提醒应用程序)

private void getProfileInformation(){
try {
        if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
            RemindersUser.IS_FB_USER =false;
            Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
            String personName = currentPerson.getDisplayName();
            String personPhotoUrl = currentPerson.getImage().getUrl();
            personPhotoUrl = personPhotoUrl.substring(0,personPhotoUrl.length() - 2)+ PROFILE_PIC_SIZE;
            String personGooglePlusId = currentPerson.getId();
            String email = Plus.AccountApi.getAccountName(mGoogleApiClient);
            mRemindersUser =new RemindersUser(
                    personName,
                    email,
                    personPhotoUrl,
                    personGooglePlusId);
            Intent viewPagerIntent = new Intent(getActivity().getApplicationContext(), ViewPagerActivity.class);
            viewPagerIntent.putExtra(RemindersUser.USERNAME, mRemindersUser.getName());
            viewPagerIntent.putExtra(RemindersUser.MAIL, mRemindersUser.getMail());
            viewPagerIntent.putExtra(RemindersUser.IMAGE, mRemindersUser.getImage());
            viewPagerIntent.putExtra(RemindersUser.USER_ID, mRemindersUser.getUserId());
            startActivity(viewPagerIntent);
        } else {
            Toast.makeText(getActivity(),"Person information is null", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

【问题讨论】:

  • 完成,我的应用程序几乎完全由片段完成,这就是所有 getActivity 调用的原因。

标签: android google-api lifecycle onactivityresult


【解决方案1】:

已解决:

我在管理 Google+ 连接的生命周期时出错了,比我应该做的抽象级别低一级,我开始从 Activity 而不是从片段管理连接,一切正常。

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 2014-03-31
    • 2012-03-06
    • 1970-01-01
    • 2016-12-08
    • 2015-08-19
    • 1970-01-01
    • 2012-07-24
    相关资源
    最近更新 更多