我在 Android SDK 22 上遇到 twitter.sdk.android:twitter:1.14.1 的问题。
登录过程正常,但当我必须要求获取电子邮件地址的权限时,我得到以下异常。
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)
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);
}
}
答案 0 :(得分:0)
尝试通过Factory
创建Builder
的实例。
final Fabric fabric = new Fabric.Builder(this)
.kits(new Twitter(authConfig))
.logger(new DefaultLogger(Log.DEBUG))
.debuggable(true)
.build();
因为你从不构建Factory方法。
希望这有帮助。