确认Twitter应用程序已在Android上login

我正在开发的应用程序启动官方Twitter应用程序新post屏幕,以便用户可以发布带有一些额外的文字意向添加的鸣叫。 我已经得到了这个很好的工作,但是如果用户没有使用twitter应用程序login,事情会变得有点困惑。 该应用程序启动,但用户必须login,一旦他们已经完成了正常的Twitter屏幕出现,如果他们使用后退button来回到我的应用程序,新的职位屏幕实际上出现在按下Twitter的饲料屏幕后。

有什么办法可以检查用户是否实际login到Twitter应用程序,然后尝试运行该意图?

Solutions Collecting From Web of "确认Twitter应用程序已在Android上login"

我认为这是一个Twitter应用程序的内部问题,你不能testing它。

另一方面,你可以提供一个对话框警告用户这个事情与“不要再显示这个对话框”checkbox,所以他得到build议,可以永远dimges的对话框。 你甚至可以提供指令来validation这个对话框中的Twitter应用程序。

我正在使用twitter4j库。 在这里我检查用户名。 如果用户名是空的,那么没有用户login,否则我会得到用户名。 这个用户名在我用共享首选项存储的访问令牌中可用。

username = mySession.getUsername();

username =(username.equals(“”))? “未login”:用户名;

mySession的代码: –

public class MySession { private SharedPreferences sharedPref; private Editor editor; private static final String TWEET_AUTH_KEY = "auth_key"; private static final String TWEET_AUTH_SECRET_KEY = "auth_secret_key"; private static final String TWEET_USER_NAME = "user_name"; private static final String SHARED = "Twitter_Preferences"; public TwitterSession(Context context) { sharedPref = context.getSharedPreferences(SHARED, Context.MODE_PRIVATE); editor = sharedPref.edit(); } public void storeAccessToken(AccessToken accessToken, String username) { editor.putString(TWEET_AUTH_KEY, accessToken.getToken()); editor.putString(TWEET_AUTH_SECRET_KEY, accessToken.getTokenSecret()); editor.putString(TWEET_USER_NAME, username); editor.commit(); } public void resetAccessToken() { editor.putString(TWEET_AUTH_KEY, null); editor.putString(TWEET_AUTH_SECRET_KEY, null); editor.putString(TWEET_USER_NAME, null); editor.commit(); } public String getUsername() { return sharedPref.getString(TWEET_USER_NAME, ""); } public AccessToken getAccessToken() { String token = sharedPref.getString(TWEET_AUTH_KEY, null); String tokenSecret = sharedPref.getString(TWEET_AUTH_SECRET_KEY, null); if (token != null && tokenSecret != null) return new AccessToken(token, tokenSecret); else return null; } } 

希望这会帮助你。

试试这个函数,这个函数反过来会返回true或者false。

True :login
:没有login

twitter.getAuthorization()函数没有通过处理这个函数,你会发现一个错误,你可以find用户是否先前login过。

 public static boolean isAuthenticated(SharedPreferences prefs) { String token = prefs.getString(OAuth.OAUTH_TOKEN, ""); String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, ""); AccessToken a = new AccessToken(token,secret); Twitter twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); try { twitter.getAuthorization(); return true; } catch (Exception e) { return false; } } 

只需在urcreate()中添加这些行就可以了

 final Session activeSession = Twitter.getInstance().core.getSessionManager().getActiveSession(); if (activeSession != null){ //do someting }