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)
Ответы
Ответ 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)