在调用任何方法之前,如何确保它是connected()?我的方法是在GooglePlus身份验证之后调用的

时间:2015-06-26 20:15:07

标签: android google-play-services

请参阅以下LogCat输出。在Base.OnStart()中我调用了mPlusClient.connect();现在我在ShowLog.OnStart中调用各种方法,但仅仅因为Google尚未通过身份验证,它会抛出错误" GoogleApiClient未连接"。

我应该怎么做才能改变我的设计,以便它始终连接,然后我只调用各种方法。

mainActivity.onCreateOptionsMenu called
Base.onConnectionFailed called
onClick called
onActivityResult called
Base: onConnected called. Is Google connected?true
showLog: onCreate
Base: onCreate
showLog: onCreate: is Google connected?false
showLog: onStart
Base: onStart
Base: onStart. Is Google connected?false
**showLog: onStart: is Google connected?false**
showLogsActivity.onCreateOptionsMenu called
Base: onConnected called. Is Google connected? **true**
Base: onStop
showLog: onStop
Base: onStop

我还包括下面的代码(我正在删除一些代码以保持简洁)。 这是完整的代码: http://codeviewer.org/view/code:52b6

由于 编辑1 * 建议后我将代码修改为:

Class showLog{

@Override
    void onGooglePlayServicesConnected() {
        if (mPlusClient.isConnected()) {
            //background process to get Picasa Photo
            AsynTaskGetPicasaMedia objAsyncTaskGetPicasaMedia = new AsynTaskGetPicasaMedia(getApplicationContext());
            objAsyncTaskGetPicasaMedia.execute();
        }

    }

}

现在上课AsynTaskGetPicasaMedia

 @Override
    protected Boolean doInBackground(Void... params) {


        final String accountName = Plus.AccountApi.getAccountName(BaseActivity.mPlusClient);
}

我仍然收到错误!

1 个答案:

答案 0 :(得分:1)

如果您的基类实现了google play服务的回调,那么您在该基类中创建一个方法,该方法在连接时调用。

例如

@Override
public void onConnected(Bundle connectionHint) {
    onGooglePlayServicesConnected();
}

public void onGooglePlayServicesConnected(){

}
扩展此基类的活动中的

只会覆盖方法onGooglePlayServicesConnected()

@Override
public void onGooglePlayServicesConnected() {
    //do stuff here
}