我正在开发的应用程序启动官方推特应用程序新帖子屏幕,因此用户可以发布推文,并在意图中添加一些额外的文本。我已经很好地完成了这项工作,但是如果用户没有使用 twitter 应用程序登录,事情就会变得有些混乱。该应用程序启动但用户必须登录,一旦他们完成正常的推特屏幕出现,如果他们使用后退按钮返回我的应用程序,新的帖子屏幕实际上会在回击推特提要屏幕后出现。
有什么方法可以在尝试运行意图之前检查用户是否实际登录到 twitter 应用程序?
我正在开发的应用程序启动官方推特应用程序新帖子屏幕,因此用户可以发布推文,并在意图中添加一些额外的文本。我已经很好地完成了这项工作,但是如果用户没有使用 twitter 应用程序登录,事情就会变得有些混乱。该应用程序启动但用户必须登录,一旦他们完成正常的推特屏幕出现,如果他们使用后退按钮返回我的应用程序,新的帖子屏幕实际上会在回击推特提要屏幕后出现。
有什么方法可以在尝试运行意图之前检查用户是否实际登录到 twitter 应用程序?
我正在使用 twitter4j 库。在这里,我检查用户名。如果用户名为空,则没有用户登录,否则我得到用户名。此用户名在我存储在共享首选项中的访问令牌中可用。
用户名= mySession.getUsername();
用户名 = (username.equals("")) ?“未登录”:用户名;
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;
}
}
希望这会帮助你。
I think it's a Twitter app internal issue and you can't test for it.
On the other hand you could provide a Dialog warning the user for this matter with a "Do not show this dialog anymore" checkbox so he gets advised and can dimiss forever the Dialog. You could even provide instructions to authenticate insside the Twitter app in this Dialog.
试试这个函数,它会反过来返回真或假。
True : 已登录
False : 未登录
twitter.getAuthorization()如果没有登录,函数会抛出一个错误,通过处理这个你可以找到用户以前是否登录过。
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;
}
}
只需在您的活动的 oncreate() 中添加这些行
final Session activeSession = Twitter.getInstance().core.getSessionManager().getActiveSession();
if (activeSession != null){
//do someting
}