所以昨天我一整天都试图解决这个问题。
我的应用应该连接到GooglePlay(为了访问排行榜),但只要我运行GoogleApiClient.connect()
方法,应用就会崩溃(与.enableAutoManage
相同的问题)。我甚至无法捕获错误,因为客户端似乎运行了一个新线程。
我按如下方式初始化GoogleApiClient
:
GoogleApiClient gaClient;
gaClient = new GoogleApiClient.Builder(this)
.addOnConnectionFailedListener(this)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
一旦我运行gaClient.connect()
,即使我在其周围添加了try-catch
声明,该应用也会崩溃。 onConnectionFailed
侦听器未激活。
我对项目有以下依赖
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support:design:26.+'
compile 'com.google.android.gms:play-services-games:11.0.2'
compile 'com.google.android.gms:play-services-auth:11.0.2'
compile 'com.google.android.gms:play-services-ads:11.0.2'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12' }
我也试过了版本:11.0.4
stacktrace看起来像这样:
java.lang.NullPointerException: Attempt to invoke virtual method 'int com.huawei.lcagent.client.LogCollectManager.getUserType()' on a null object reference
at com.android.server.util.ReportTools.getUserType(ReportTools.java:86)
at com.android.server.util.ReportTools.isBetaUser(ReportTools.java:73)
at com.android.server.util.ReportTools.report(ReportTools.java:58)
at com.android.server.util.HwUserBehaviourRecord.appExitRecord(HwUserBehaviourRecord.java:65)
at com.android.server.am.ActivityManagerService$UiHandler.handleMessage(ActivityManagerService.java:1523)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:150)
at android.os.HandlerThread.run(HandlerThread.java:61)
at com.android.server.ServiceThread.run(ServiceThread.java:46)
由于堆栈跟踪,我认为它与我的手机有关,但不幸的是我无法访问另一个甚至是模拟器。如果无法修复,是否有任何解决方法?
我也错过了让用户选择他想要选择的帐户的功能,这是否已经集成在connect()
方法中?
我知道有一个非常类似的问题,但没有一个答案对我有用。
提前致谢!
答案 0 :(得分:0)
在构建ConnectionCallback
时,您还需要添加GoogleApiClient
。
将其添加到初始化中。
GoogleApiClient gaClient;
gaClient = new GoogleApiClient.Builder(this)
.addOnConnectionFailedListener(this)
.addConnectionCallbacks(this) // with this you will have to implement another method onConnected and then .connect method will work fine.
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();