从BaseGameActivity继承时获取Google+帐户名称

时间:2014-07-26 12:20:01

标签: android google-plus google-play-services

我的主要活动扩展了BaseGameActivity,我试图获取排行榜中显示的用户名。我尝试使用:

Plus.AccountApi.getAccountName(getApiClient());

但它没有用,我得到了:

07-26 15:03:44.624: E/AndroidRuntime(28361): FATAL EXCEPTION: main
07-26 15:03:44.624: E/AndroidRuntime(28361): java.lang.NullPointerException: Appropriate Api was not requested.
07-26 15:03:44.624: E/AndroidRuntime(28361):    at com.google.android.gms.internal.hn.b(Unknown Source)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at com.google.android.gms.common.api.c.a(Unknown Source)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at com.google.android.gms.internal.kj.a(Unknown Source)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at com.google.android.gms.internal.kj.getAccountName(Unknown Source)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at com.gfel.maze.StartPage$4.onClick(StartPage.java:158)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at android.view.View.performClick(View.java:4147)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at android.view.View$PerformClick.run(View.java:17161)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at android.os.Handler.handleCallback(Handler.java:615)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at android.os.Looper.loop(Looper.java:213)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at android.app.ActivityThread.main(ActivityThread.java:4787)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at java.lang.reflect.Method.invokeNative(Native Method)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at java.lang.reflect.Method.invoke(Method.java:511)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
07-26 15:03:44.624: E/AndroidRuntime(28361):    at dalvik.system.NativeStart.main(Native Method)

我知道有一种方法可以使用GoogleApiClient.Builder,但我正在寻找另一种方式 我使用BaseGameActivity。

1 个答案:

答案 0 :(得分:0)

在onCreate方法中添加 setRequestedClients(BaseGameActivity.CLIENT_GAMES | BaseGameActivity.CLIENT_PLUS);

在super.conCreate(savedInstanceState)之前

@Override
public void onCreate(Bundle savedInstanceState) {
    // set requested clients (games and cloud save)
    setRequestedClients(BaseGameActivity.CLIENT_GAMES |
            BaseGameActivity.CLIENT_PLUS);

    super.onCreate(savedInstanceState);


    setContentView(R.layout.activity_leaderboard);
}

可以在https://developers.google.com/games/services/android/init

阅读更多信息