2014-01-22 6 views
6

ich den Fehler bekommenKann nur die unteren 16 Bits für requestCode verwenden (Google-Dienste spielen)

IllegalArgumentException: Can only use lower 16 bits for requestCode 

Als ich Enable Google Play Services in meiner app drücken bin.

Der Code, den ich habe, ist

private boolean checkPlayServices() { 
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
    Log.d("resultCode", String.valueOf(resultCode)); 
    if (resultCode != ConnectionResult.SUCCESS) { 
     if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) { 
      GooglePlayServicesUtil.getErrorDialog(resultCode, this, GooglePlayServicesUtil.GOOGLE_PLAY_SERVICES_VERSION_CODE).show(); 
     } else { 
      Log.i("FUApp", "This device is not supported."); 
      finish(); 
     } 
     return false; 
    } 
    return true; 
} 

Hier ist der Stacktrace des Fehlers

01-29 14:15:30.714 10725-10725/com.example.fitnessunlimited.android E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.fitnessunlimited.android, PID: 10725 
java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode 
     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:837) 
     at com.google.android.gms.internal.i.onClick(Unknown Source) 
     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 

Wie kann ich diesen Fehler beheben? Das Drücken der Schaltfläche "Aktivieren" funktioniert bei Google Now, nur nicht in der App, die ich gerade erstelle.

+0

Wo fangen Sie diese Aktivität an? Fügen Sie diesen Code ein. –

+0

Überprüfen Sie diese http://stackoverflow.com/questions/14375239/acra-exception-can-only-use-lower-16-bits-for-requestcode –

+0

@ZohrraKhan Es ist die Standardaktivität, es wird gestartet, wenn die App –

Antwort

4

Mein Problem war

GooglePlayServicesUtil.getErrorDialog(resultCode, this, GooglePlayServicesUtil.GOOGLE_PLAY_SERVICES_VERSION_CODE) 

Ändern Sie diese Zeile zu

GooglePlayServicesUtil.getErrorDialog(resultCode, this, 9000) 

die Schaltfläche Arbeit richtig gemacht und die Einstellungsseite öffnen.

+0

K gute Votes up. Definieren Sie das Literal auf diese Weise als private final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000; da CONNECTION_FAILURE_RESOLUTION_REQUEST an einem anderen Ort verwendet werden kann. –

+0

Ja, das ist, wo ich die Nummer bekommen habe, ich habe es in diese Variable verschoben, jetzt habe ich gesehen, dass es funktioniert –

+0

Sorry, es war einfach zu knacken, aber ich lese nie die ganze Zeile von getErrorDialog. Nur wenn ich logcat sehe, nehme ich immer etwas mit startActivityResult an. –