web-dev-qa-db-ja.com

google + for Android(nullポインタを取得)

Android この公式のGoogleドキュメント を使用して、Google +を組み込んでいます。以下の手順を実行した後:

  1. 最新のSDKをDwnload
  2. Android 4.4.2、
  3. Java 1.7を使用するようにEclipseを構成しました(1.6を使用するように言っていますが、それは私の問題ではないと思います)
  4. 次に、_Package.Name_および_Sha1_を提供して、Google + APIを有効にします。次に、サンプル app を構成し、それにgoogle-play-services_lib(imported)を添付します。

アプリを実行すると、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.

グーグルを通過しましたが、運はありませんでした。

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)

31
Saad Mahmud

以下は私のために働いています。

この方法で単一のパラメーターを渡すだけです。

.addApi(Plus.API) 

の代わりに

.addApi(Plus.API, null)

[〜#〜]または[〜#〜]

plusOptionsオブジェクトを渡すこともできます

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

これらのソリューションはどちらも機能します。

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

それは私のために働いた。 mGoogleApiClientはGoogleApiClientのオブジェクトです。 addApi()にパラメーターを1つだけ渡します。お気に入り

.addApi(Plus.API)
3
Soumen Das

その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
Peter Sokolov