2015-04-16 19 views
9

Ho installato e configurato tutto per il collegamento L'SDK di Facebook alla mia app per Android.Android Facebook Login "LoginActivity non può essere avviato"

  • Facebook SDK è nel mio progetto
  • ho aggiunto il mio ID APP l'ID Facebook APP
  • My Android Key Hash è corretto e legato nel consiglio di Facebook Dev
  • ho l'attività " com.facebook.FacebookActivity" nel mio manifesto
  • ho l'attività 'com.facebook.LoginActivity' nel mio manifesto
  • ho i meta-dati facebook_app_id impostati nel mio manifesto e corretta

Il widget Facebook Login set

<com.facebook.login.widget.LoginButton 
     android:id="@+id/login_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="30dp" 
     android:layout_marginBottom="30dp" /> 

mio Frammento Classe

public class FragmentSetting extends android.support.v4.app.Fragment { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(getActivity().getApplicationContext()); 
    SingletonUserData.setCallbackManager(CallbackManager.Factory.create()); 
} 

@Override 
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle args) { 
    if (!SingletonUserData.isLogged()) { 
     view = inflater.inflate(R.layout.fragment_logme, container, false); 
     TextView facebook = (TextView) view.findViewById(R.id.LogByFacebook); 
     loginButton = (LoginButton) view.findViewById(R.id.login_button); 
     loginButton.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email")); 
     loginButton.setFragment(this); 
     loginButton.registerCallback(SingletonUserData.getCallbackManager(), new FacebookCallback<LoginResult>() {...}); 

e

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    SingletonUserData.getCallbackManager().onActivityResult(requestCode, resultCode, data); 
} 

Dopo diverse ore, non riesco a trovare l'errore. È a causa del frammento? Ho cercato nel mio MainActivityToFragment ma ho sempre la stessa backtrace, wich è:

Entra tentativo fallì: LoginActivity non potrebbe essere avviato a com.facebook.login.LoginManager.startLogin (LoginManager.java:382) in com.facebook.login.LoginManager.logInWithReadPermissions (LoginManager.java:250) in com.facebook.login.widget.LoginButton $ LoginClickListener.onClick (LoginBj.java:689) in com.facebook.FacebookButtonBase $ 1.seleziona (FacebookButtonBase.java:310)

+1

Hai aggiunto facebookattività al tuo manifest ma hai aggiunto l'accesso al manifest? – Laurenswuyts

+0

Grazie per questa rapida risposta, Sì, ho fatto –

+0

Hai trovato un lavoro in giro? – gaurav414u

risposta

23

Sono stato in grado di risolvere questo rimuovendo Log L'inattività dal mio AndroidManifest.xml

<!--Remove this--> 
<activity android:name="com.facebook.LoginActivity" 
android:theme="@android:style/Theme.Translucent.NoTitleBar" 
android:label="@string/app_name" /> 

e aggiungendo

<!--Add this--> 
<activity android:name="com.facebook.FacebookActivity" 
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
android:theme="@android:style/Theme.Translucent.NoTitleBar" 
android:label="@string/app_name" /> 
+1

Sfortunatamente questo non cambia nulla. Grazie comunque. –

+3

Questa è la risposta giusta per sdk 4.0. – Hardy

+1

Salvato il mio lavoro –

2

così ho avuto lo stesso problema e ha risolto il tutto per ... la creazione di mio app correttamente sul Facebook developers page.

Fondamentalmente il mio app mancava:

  • (Google Play) nome del pacchetto
  • nome della classe
  • un hash chiave

Una volta mi riempio questi in, l'errore era sparito.

1

Chiave hash dell'app in fase di sviluppo e Facebook a/c chiederà sia la chiave hash sia la stessa.

public void getHashkey(){ 
try { 
       PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 
         PackageManager.GET_SIGNATURES); 
       for (Signature signature : packageInfo.signatures) { 
        MessageDigest md = MessageDigest.getInstance("SHA"); 
        md.update(signature.toByteArray()); 
        Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
       } 
      } catch (PackageManager.NameNotFoundException e1) { 
       Log.e("Name not found", e1.toString()); 
      } catch (NoSuchAlgorithmException e) { 
       Log.e("No such an algorithm", e.toString()); 
      } catch (Exception e) { 
       Log.e("Exception", e.toString()); 
      } 
} 

chiamata questo nella vostra onCreate() di attività e copiare la chiave hash (che si concluderà con segno =) dal registro e basta registrarsi in Facebook a/ce u sono fatto.

Problemi correlati