Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序未登录MainActivity,但在下一个活动中登录。使用BaseGameUtils实现Google Play服务登录_Android_Google Play Services_Google Play Games - Fatal编程技术网

Android 应用程序未登录MainActivity,但在下一个活动中登录。使用BaseGameUtils实现Google Play服务登录

Android 应用程序未登录MainActivity,但在下一个活动中登录。使用BaseGameUtils实现Google Play服务登录,android,google-play-services,google-play-games,Android,Google Play Services,Google Play Games,我正在尝试为我的游戏使用BaseGameUtils实现Google登录 项目结构如下: public class LoginActivity extends BaseGameActivity implements... {} public class MainActivity extends LoginActivity {} public class NormalActivity extends LoginActivity {} 在应用过程中,MainActivity启动Norm

我正在尝试为我的游戏使用BaseGameUtils实现Google登录

项目结构如下:

public class LoginActivity extends BaseGameActivity implements... {}
public class MainActivity extends LoginActivity   {}
public class NormalActivity extends LoginActivity      {}
在应用过程中,MainActivity启动NormalActivity

理想情况下,我希望游戏能够自动登录MainActivity,或者通过单击登录按钮登录

但是对于API级别<21,我发现从MainActivity登录失败并抛出一个“未知错误”

但是,在我从MainActivity打开NormalActivity时失败后,登录弹出窗口出现,在NormalActivity内登录成功

其他信息:
在我的调查中,我发现在我的带有API的设备上,我发现了这种行为的原因

由于
MainActivity
NormalActivity
都是
loginacivity
的派生,我认为这些类的基本实现没有问题

MainActivity
NormalActivity
之间的唯一区别是在AndroidManifest.xml中,
MainActivity
处于
android:launchMode:“singleInstance”

删除
launchMode
参数解决了问题


希望这能帮助其他陷入类似问题的用户。

尝试添加
.addApi(Plus.API).addScope(Plus.SCOPE\u Plus\u LOGIN)
GoogleAppClient builder。您好,谢谢。我最初也补充了这一点。但是它对当前行为没有影响。您是否在
main活动中调用
onActivityResult
???如果没有,那么请尝试在派生类中添加
onActivityResult
。我这样做了,但它不起作用,
NormalActivity
类没有
onActivityResult
函数,但当它调用
super.onStart()
时,我调用
mgoogleapclient.connect()
,连接成功。现在可以工作了吗?Bcz除了我能想到的两种可能性之外,我没有发现你的代码有任何问题。读完这篇文章后,我翻阅了这篇旧文章。这就解释了为什么登录不适用于您的主要活动。明白了!非常感谢你的帮助!这是一个有趣的问题……)
E/dalvikvm: Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServiceUtil.zza
public class LoginActivity extends BaseGameActivity implements
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,
    ResultCallback<People.LoadPeopleResult>{

private static final int RC_SIGN_IN = 9001;

public GoogleApiClient mGoogleApiClient;

private boolean mResolvingConnectionFailure = false;

private boolean mAutoStartSignInFlow = true;

private boolean mSignInClicked = false;

String TAG = "LoginActivity: ";

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    Log.v(TAG, "onCreate()");
    mGoogleApiClient = buildGoogleApiClient();
}

@Override
protected void onStart()
{
    super.onStart();
    mGoogleApiClient.connect();
}

@Override
protected void onStop()
{
    super.onStop();

    Log.d(TAG, "onStop(): disconnecting");
    if (mGoogleApiClient.isConnected()) {
        mGoogleApiClient.disconnect();
    }

}

public GoogleApiClient buildGoogleApiClient() {

    GoogleApiClient.Builder builder = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Games.API).addScope(Games.SCOPE_GAMES);
    return builder.build();
}

@Override
public void onConnected(Bundle connectionHint) {
    Log.i(TAG, "onConnected");
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    if (mResolvingConnectionFailure) {
        return;
    }

    if (mSignInClicked || mAutoStartSignInFlow) {
        mAutoStartSignInFlow = false;
        mSignInClicked = false;
        mResolvingConnectionFailure = true;

        if (!BaseGameUtils.resolveConnectionFailure(this,
                mGoogleApiClient, connectionResult,
                RC_SIGN_IN, getResources().getString(R.string.signin_other_error)))
        {
            mResolvingConnectionFailure = false;
        }
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        mSignInClicked = false;
        mResolvingConnectionFailure = false;
        if (resultCode == RESULT_OK) {
            mGoogleApiClient.connect();
        } else {
            BaseGameUtils.showActivityResultError(this,
                    requestCode, resultCode, R.string.signin_failure);
        }
    }
}


@Override
public void onConnectionSuspended(int cause) {
    mGoogleApiClient.connect();
}

@Override
public void onResult(People.LoadPeopleResult loadPeopleResult) {

}

public boolean isSignedIn() {
    return (mGoogleApiClient != null && mGoogleApiClient.isConnected());
}


@Override
public void onSignInFailed() {

}

@Override
public void onSignInSucceeded() {

}}