Android 应用程序未登录MainActivity,但在下一个活动中登录。使用BaseGameUtils实现Google Play服务登录
我正在尝试为我的游戏使用BaseGameUtils实现Google登录 项目结构如下: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
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() {
}}