2016-07-09 11 views
2

Problem:

ich ein Problem haben mit twitter.sdk.android:twitter:1.14.1 auf Android SDK 22.fehlgeschlagen ShareEmailActivity erstellen - keine TwitterSession für id

Der Login-Prozess funktioniert korrekt, aber wenn ich die Erlaubnis zum Abrufen der E-Mail-Adresse fragen muss, habe ich die folgende Ausnahme.

E/Twitter: Failed to create ShareEmailActivity. 
    java.lang.IllegalArgumentException: No TwitterSession for id:559455005 
    at com.twitter.sdk.android.core.identity.ShareEmailActivity.getSession(ShareEmailActivity.java:85) 
    at com.twitter.sdk.android.core.identity.ShareEmailActivity.onCreate(ShareEmailActivity.java:58) 
    at android.app.Activity.performCreate(Activity.java:6876) 

-Code:

Haben Sie eine Idee? Nach meiner aktuellen Implementierung:

MyApplication.java

public class MyApplication extends Application { 

    private static final String TWITTER_KEY = "------------"; 
    private static final String TWITTER_SECRET = "---------------------"; 

    private TwitterAuthConfig authConfig; 

    public void onCreate(){ 
     super.onCreate(); 
     authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); 
     Fabric.with(this, new Twitter(authConfig)); 
    } 

} 

LoginActivity.java

public class LoginActivity extends Activity { 

    private TwitterLoginButton mFormButtonTwitterLogin 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mFormButtonTwitterLogin = (TwitterLoginButton) findViewById(R.id.form_button_twitter_login); 
    mFormButtonTwitterLogin.setCallback(new Callback<TwitterSession>() { 
     @Override 
     public void success(Result<TwitterSession> result) { 
      TwitterSession session = result.data; 
      try { 
       new TwitterAuthClient().requestEmail(session, new Callback<String>() { 
        @Override 
        public void success(Result<String> result) { 
         final String email = result.data; 
         Toast.makeText(getApplicationContext(), email, Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void failure(TwitterException exception) { 
         Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } catch (Exception exception) { 
       Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_SHORT).show(); 
      } 
     } 

     @Override 
     public void failure(TwitterException exception) { 
      Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     mFormButtonTwitterLogin.onActivityResult(requestCode, resultCode, data); 
    } 
} 

Antwort

0

versuchen, eine Instanz für Factory Throught die Builder zu schaffen.

final Fabric fabric = new Fabric.Builder(this) 
      .kits(new Twitter(authConfig)) 
      .logger(new DefaultLogger(Log.DEBUG)) 
      .debuggable(true) 
      .build(); 

weil Sie nie die Factory-Methode erstellen.

Hoffe, das hilft.