2016-09-29 2 views
0

Cache Ich bin neu in Android sowie Fb SDK. Also bitte posten Sie einen Vorschlag oder eine Referenz.App stürzt jedes Mal bei Kaltstart ab, nachdem ich die Daten gelöscht und

Es funktionierte gut, bis ich die Daten löschte. Jetzt stürzt die App beim Kaltstart ab. Ich habe den Login-Status überprüft, bin aber immer noch mit dem Lebenszyklus der currentAccessToken verwechselt. Gibt es ein Dokument oder ein Lebenszyklusdiagramm von accessToken, dem ich folgen könnte? Hier ist der Code, den ich versucht habe.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Fabric.with(this, new Crashlytics()); 

     initialiseFacebookSdk(); 

     setContentView(R.layout.activity_signin); 

     ButterKnife.bind(this); 

     animShow = AnimationUtils.loadAnimation(this, R.anim.slide_up); 
     mSignIn.startAnimation(animShow); 
     mLogoImg.setAlpha(200); 
    } 

    public boolean isLoggedIn() { 
     return AccessToken.getCurrentAccessToken() != null && Profile.getCurrentProfile() != null; 
    } 

    private void initialiseFacebookSdk() { 

     FacebookSdk.sdkInitialize(this.getApplicationContext()); 
     mCallbackManager = CallbackManager.Factory.create(); 


     LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       String userId = loginResult.getAccessToken().getUserId(); 
       String accessToken = loginResult.getAccessToken().getToken(); 

       Log.d(TAG, "UserId: " + userId + "\n" + "AccessToken: " + accessToken + ""); 

       // Add code here for sending userId and access token to api 

       Intent intent = new Intent(SignInActivity.this, HomeScreenActivity.class); 
       startActivity(intent); 

      } 

      @Override 
      public void onCancel() { 
       Snackbar.make(getCurrentFocus(), "Login cancelled!", Snackbar.LENGTH_LONG) 
         .setActionTextColor(ContextCompat.getColor(getApplicationContext(), R.color.snackbar_action_color)) 
         .show(); 
      } 

      @Override 
      public void onError(FacebookException error) { 
       Snackbar.make(getCurrentFocus(), "Login error. Retry!", Snackbar.LENGTH_LONG) 
         .setActionTextColor(ContextCompat.getColor(getApplicationContext(), R.color.snackbar_action_color)) 
         .show(); 

       Log.d(TAG, error + ""); 
      } 
     }); 

    } 


    @OnClick({R.id.sign_fb_splash_linear}) 
    void onClick() { 

     LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile")); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if (isLoggedIn()) { 
      Intent intent = new Intent(SignInActivity.this, HomeScreenActivity.class); 
      startActivity(intent); 

     } else { 

      super.onActivityResult(requestCode, resultCode, data); 
      mCallbackManager.onActivityResult(requestCode, resultCode, data); 
     } 
    } 
} 

Hier ist die logcat

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {com.debdeep.partyhere.activity.SignInActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference 
                     at android.app.ActivityThread.deliverResults(ActivityThread.java:3588) 
                     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3631) 
                     at android.app.ActivityThread.access$1300(ActivityThread.java:151) 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359) 
                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                     at android.os.Looper.loop(Looper.java:135) 
                     at android.app.ActivityThread.main(ActivityThread.java:5268) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:372) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) 
                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference 
                     at android.support.design.widget.Snackbar.<init>(Snackbar.java:183) 
                     at android.support.design.widget.Snackbar.make(Snackbar.java:215) 
                     at com.debdeep.partyhere.activity.SignInActivity$1.onError(SignInActivity.java:101) 
                     at com.facebook.login.LoginManager.finishLogin(LoginManager.java:579) 
                     at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:216) 
                     at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:159) 
                     at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:82) 
                     at com.debdeep.partyhere.activity.SignInActivity.onActivityResult(SignInActivity.java:129) 
                     at android.app.Activity.dispatchActivityResult(Activity.java:6235) 
                     at android.app.ActivityThread.deliverResults(ActivityThread.java:3584) 
                     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3631)  
                     at android.app.ActivityThread.access$1300(ActivityThread.java:151)  
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)  
                     at android.os.Handler.dispatchMessage(Handler.java:102)  
                     at android.os.Looper.loop(Looper.java:135)  
                     at android.app.ActivityThread.main(ActivityThread.java:5268)  
                     at java.lang.reflect.Method.invoke(Native Method)  
                     at java.lang.reflect.Method.invoke(Method.java:372)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)  
+0

Sie ein Samsung-Gerät mit Ihrer App zu testen? Ich habe ein Problem mit Samsung-Telefonen festgestellt, das Probleme beim Neustarten/Starten der Anwendung verursacht. Wenn ja, habe ich noch keine Lösung gefunden. – TheAnonymous010

+0

Nein Ich verwende ein Gerät des Yu-Herstellers. – Debdeep

+0

Glauben Sie, dass etwas mit der Logik nicht stimmt? – Debdeep

Antwort

0

Erstens stellen initialiseFacebookSdk(); direkt nach super.onCreate (savedInstanceState); Es muss die erste Zeile sein. Zweitens, "this.getApplicationContext()" könnte ein Fehler sein Schreiben Sie einfach getApplicationContext().

Außerdem diesen Link überprüfen und guid wenn Sie nicht bereits haben: https://developers.facebook.com/docs/facebook-login/access-tokens

Verwandte Themen