2014-02-13 5 views
25

Ich gehe mit dem Tutorial here, und bekomme ich Fehler in der onConnectionFailed Klasse.Implementierung von Google Play-Dienste in Android

vollständigen Code

package com.alfalfa.thisthat; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.IntentSender.SendIntentException; 
import android.os.Bundle; 
import android.view.Menu; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; 
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; 
import com.google.android.gms.plus.Plus; 

public class LoginActivity extends Activity implements 
ConnectionCallbacks, OnConnectionFailedListener { 

    /* Request code used to invoke sign in user interactions. */ 
    private static final int RC_SIGN_IN = 0; 

    /* Client used to interact with Google APIs. */ 
    private GoogleApiClient mGoogleApiClient; 

    /* A flag indicating that a PendingIntent is in progress and prevents 
    * us from starting further intents. 
    */ 
    private boolean mIntentInProgress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Plus.API, null) 
      .addScope(Plus.SCOPE_PLUS_LOGIN) 
      .build(); 
    } 

    protected void onStart() { 
     super.onStart(); 
     mGoogleApiClient.connect(); 
    } 

    protected void onStop() { 
     super.onStop(); 

     if (mGoogleApiClient.isConnected()) { 
      mGoogleApiClient.disconnect(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult result) { 
      if (!mIntentInProgress && result.hasResolution()) { 
      try { 
       mIntentInProgress = true; 
       startIntentSenderForResult(result.getIntentSender(), 
        RC_SIGN_IN, null, 0, 0, 0); 
      } catch (SendIntentException e) { 
       // The intent was canceled before it was sent. Return to the default 
       // state and attempt to connect to get an updated ConnectionResult. 
       mIntentInProgress = false; 
       mGoogleApiClient.connect(); 
      } 
      } 
     } 

    @Override 
    public void onConnected(Bundle connectionHint) { 
     // We've resolved any connection errors. mGoogleApiClient can be used to 
     // access Google APIs on behalf of the user. 
    } 

    @Override 
    public void onConnectionSuspended(int cause) { 
      mGoogleApiClient.connect(); 
    } 

    protected void onActivityResult(int requestCode, int responseCode, Intent intent) { 
      if (requestCode == RC_SIGN_IN) { 
       mIntentInProgress = false; 

       if (!mGoogleApiClient.isConnecting()) { 
        mGoogleApiClient.connect(); 
       } 
      } 
    } 
} 

EDIT: LogCat

02-13 19:12:31.763: E/AndroidRuntime(21257): FATAL EXCEPTION: main 
02-13 19:12:31.763: E/AndroidRuntime(21257): Process: com.alfalfa.thisthat, PID: 21257 
02-13 19:12:31.763: E/AndroidRuntime(21257): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alfalfa.thisthat/com.alfalfa.thisthat.MainActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.alfalfa.thisthat/com.alfalfa.thisthat.LoginActivity}; have you declared this activity in your AndroidManifest.xml? 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.ActivityThread.access$800(ActivityThread.java:135) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.os.Handler.dispatchMessage(Handler.java:102) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.os.Looper.loop(Looper.java:136) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.ActivityThread.main(ActivityThread.java:5017) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at java.lang.reflect.Method.invokeNative(Native Method) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at java.lang.reflect.Method.invoke(Method.java:515) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at dalvik.system.NativeStart.main(Native Method) 
02-13 19:12:31.763: E/AndroidRuntime(21257): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.alfalfa.thisthat/com.alfalfa.thisthat.LoginActivity}; have you declared this activity in your AndroidManifest.xml? 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Activity.startActivityForResult(Activity.java:3424) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Activity.startActivityForResult(Activity.java:3385) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Activity.startActivity(Activity.java:3627) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Activity.startActivity(Activity.java:3595) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at com.alfalfa.thisthat.MainActivity.onCreate(MainActivity.java:16) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Activity.performCreate(Activity.java:5231) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
02-13 19:12:31.763: E/AndroidRuntime(21257): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
02-13 19:12:31.763: E/AndroidRuntime(21257): ... 11 more 

Antwort

29

Ab heute und Google Play SDK Version 15 wurde dies mit

result.startResolutionForResult(this, // your activity 
           RC_SIGN_IN); 
ersetzt

gemäß der aktualisierten documentation.

+0

hilft, wenn ich diese Zeile auf die über der LoginActivity Klasse geändert zeigt keine Fehler, aber wenn ich das Programm mit der Absicht von MainActivity zu LoginActivity laufen, die App Kraft schließt . Gibt es noch etwas, was ich falsch mache? Vielen Dank. –

+0

Veröffentlichen Sie Ihre Logcat, wenn es zwanghaft ist, schließen – ianhanniballake

+0

Ich aktualisierte die Frage mit der l –

5

Hoffe, dass es Sie

result.getResolution().getIntentSender() 
+3

Hiya, das könnte das Problem lösen ... aber es wäre gut, wenn du eine kleine Erklärung liefern könntest, wie und warum es funktioniert :) Vergiss nicht - es gibt Haufen von Neulingen auf Stack overflow, und sie könnten Lernen Sie ein oder zwei Dinge von Ihrem Fachwissen - was für Sie offensichtlich ist, ist ihnen vielleicht nicht so. –

+0

Wo genau verläuft diese Codezeile? –

Verwandte Themen