gpt4 book ai didi

android - 如何为 twitter.getAccountSettings() : Android 实现 AsyncTask

转载 作者:行者123 更新时间:2023-11-30 04:13:40 30 4
gpt4 key购买 nike

我在我的应用程序中使用 twitter4j。我正在使用下面的代码来检查授权 token 是否已过期或用户是否尚未登录

public static boolean isAuthenticated(Context context) {

TwitterPrefrences twitterPref = new TwitterPrefrences(context);
String token = twitterPref.getTwitterAuthToken();
String secret = twitterPref.getTwitterAuthTokenSecrate();

AccessToken a = new AccessToken(token,secret);
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(Constants.TWITT_CONSUMER_KEY, Constants.TWITT_CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);

try {
twitter.getAccountSettings();
return true;
} catch (TwitterException e) {
return false;
}

}

但是我得到以下错误

 05-02 19:52:23.531: E/AndroidRuntime(1441): FATAL EXCEPTION: main
05-02 19:52:23.531: E/AndroidRuntime(1441): android.os.NetworkOnMainThreadException
05-02 19:52:23.531: E/AndroidRuntime(1441): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
05-02 19:52:23.531: E/AndroidRuntime(1441): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
05-02 19:52:23.531: E/AndroidRuntime(1441): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
05-02 19:52:23.531: E/AndroidRuntime(1441): at java.net.InetAddress.getAllByName(InetAddress.java:220)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:45)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:178)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:75)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:103)
05-02 19:52:23.531: E/AndroidRuntime(1441): at

twitter4j.Twitter.getAccountSettings(Twitter.java:1440)

调用者代码为

chbTwOption.setOnCheckedChangeListener(new OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
boolean showTwlogin = false;
if ("No".equalsIgnoreCase(twitPref.getTwitterAuthToken())
|| "No".equalsIgnoreCase(twitPref.getTwitterAuthTokenSecrate())) {
showTwlogin = true;
} else {
showTwlogin = TwitterUtils.isAuthenticated(AddSchedule.this);
}

if(showTwlogin) {
showSocialMediaLoginMessage(Constants.TW_LOGIN_MESSAGE);
}
}
}
});

很明显,我必须为 twitter.getAccountSettings() 实现 AsyncTask,但是如何从 AsyncTask 中获取结果作为方法?还有其他方法可以检查身份验证 token 是否过期吗?或者我如何将 AsyncTask 实现为一种方法,它将返回结果作为我使用的 isAuthenticated()

请指导我。

谢谢。

最佳答案

您可以查看 Zwitscher 的来源尤其是在 TwitterLoginActivity

关于android - 如何为 twitter.getAccountSettings() : Android 实现 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416212/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com