Подтвердить что ты не робот

Google + для android (получение нулевого указателя)

Я пытаюсь включить Google+ для Android, пройдя через этот официальный google документации. После выполнения следующих шагов:

  • Dwnload last SDK
  • Использование Android 4.4.2,
  • Конфигурированный Eclipse для использования Java 1.7 (хотя он говорит, что использует 1.6, я предполагаю, что это не моя проблема).
  • Затем включите API Google+, предоставив Package.Name и Sha1. Затем я настраиваю образец приложения и подключил к нему google-play-services_lib (импортированный).

Теперь, когда я запускаю приложение, он предоставляет исключение в MainActivity

mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .addApi(Plus.API, null) // here the exception (nullPointerException) 
    .addScope(Plus.SCOPE_PLUS_LOGIN).build();

Я запускаю его на физическом устройстве Android 4.1.2.

Пройдя через Google, но не получилось.

LogCat:

05-27 10:23:46.808: D/ActivityThread(11136): setTargetHeapUtilization:0.25 05-27 10:23:46.808: D/ActivityThread(11136): setTargetHeapIdealFree:8388608 05-27 10:23:46.808: D/ActivityThread(11136): setTargetHeapConcurrentStart:2097152 05-27 10:23:47.228: D/AndroidRuntime(11136): Shutting down VM 05-27 10:23:47.228: W/dalvikvm(11136): threadid=1: thread exiting with uncaught exception (group=0x411eb438) 05-27 10:23:47.228: E/AndroidRuntime(11136): FATAL EXCEPTION: main 05-27 10:23:47.228: E/AndroidRuntime(11136): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mygoogleplus/com.example.mygoogleplus.GooglePlusMainActivity}: java.lang.NullPointerException: Null options are not permitted for this Api 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.ActivityThread.access$700(ActivityThread.java:143) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.os.Handler.dispatchMessage(Handler.java:99) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.os.Looper.loop(Looper.java:137) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.ActivityThread.main(ActivityThread.java:4960) 05-27 10:23:47.228: E/AndroidRuntime(11136): at java.lang.reflect.Method.invokeNative(Native Method) 05-27 10:23:47.228: E/AndroidRuntime(11136): at java.lang.reflect.Method.invoke(Method.java:511) 05-27 10:23:47.228: E/AndroidRuntime(11136): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 05-27 10:23:47.228: E/AndroidRuntime(11136): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 05-27 10:23:47.228: E/AndroidRuntime(11136): at dalvik.system.NativeStart.main(Native Method) 05-27 10:23:47.228: E/AndroidRuntime(11136): Caused by: java.lang.NullPointerException: Null options are not permitted for this Api 05-27 10:23:47.228: E/AndroidRuntime(11136): at com.google.android.gms.internal.fq.b(Unknown Source) 05-27 10:23:47.228: E/AndroidRuntime(11136): at com.google.android.gms.common.api.GoogleApiClient$Builder.addApi(Unknown Source) 05-27 10:23:47.228: E/AndroidRuntime(11136): at com.example.mygoogleplus.GooglePlusMainActivity.onCreate(GooglePlusMainActivity.java:89) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.Activity.performCreate(Activity.java:5203) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 05-27 10:23:47.228: E/AndroidRuntime(11136): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)

4b9b3361

Ответ 1

Для меня работали следующие.

Просто передайте один параметр таким образом.

.addApi(Plus.API) 

вместо

.addApi(Plus.API, null)

ИЛИ

вы также можете передать ему объект PlusOptions

.addApi(Plus.API, Plus.PlusOptions.builder().build())

Любое из этих решений будет работать.

Ответ 2

Вы должны создать опции для этого API

.addApi(Plus.API, PlusOptions.builder().build())

Если вы используете GameHelper - вы должны вызвать setPlusApiOptions перед настройкой.

// Google Play Services
m_GameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES | GameHelper.CLIENT_PLUS);
m_GameHelper.setPlusApiOptions( PlusOptions.builder().build() );
m_GameHelper.setup(this);

Ответ 3

mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API)
                .addScope(Plus.SCOPE_PLUS_LOGIN) 
                .build();

Это сработало для меня. mGoogleApiClient является объектом GoogleApiClient. Передайте только один параметр в addApi().  Как

.addApi(Plus.API)