android - 分享推文时 Twitter4j 崩溃

标签 android twitter twitter4j

我想向 Twitter 发布推​​文,但应用程序在单击 Twitter 按钮时崩溃了。 我的 Twitter 版本是 twitter4j-core-3.0.5.jar。我必须更改 list 中的设置吗?

我收到 illegalStateException。

public void onShareTwitter(View v) {
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
      .setOAuthConsumerKey(CONSUMER_KEY)
      .setOAuthConsumerSecret(CONSUMER_SECRET)
      .setOAuthAccessToken(ACCESS_TOKEN)
      .setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();
    Status status = null;
    try {
        status = twitter.updateStatus("Hello");
    } catch (TwitterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("Successfully updated the status to [" + status.getText() + "].");
}

错误:

08-24 21:28:14.638: E/AndroidRuntime(11030): FATAL EXCEPTION: main
08-24 21:28:14.638: E/AndroidRuntime(11030): java.lang.IllegalStateException: Could not execute method of the activity
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.view.View$1.onClick(View.java:3724)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.view.View.performClick(View.java:4261)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.view.View$PerformClick.run(View.java:17356)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.os.Handler.handleCallback(Handler.java:615)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.os.Looper.loop(Looper.java:137)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.app.ActivityThread.main(ActivityThread.java:4921)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at java.lang.reflect.Method.invokeNative(Native Method)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at java.lang.reflect.Method.invoke(Method.java:511)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at dalvik.system.NativeStart.main(Native Method)
08-24 21:28:14.638: E/AndroidRuntime(11030): Caused by: java.lang.reflect.InvocationTargetException
08-24 21:28:14.638: E/AndroidRuntime(11030):    at java.lang.reflect.Method.invokeNative(Native Method)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at java.lang.reflect.Method.invoke(Method.java:511)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.view.View$1.onClick(View.java:3719)
08-24 21:28:14.638: E/AndroidRuntime(11030):    ... 11 more
08-24 21:28:14.638: E/AndroidRuntime(11030): Caused by: android.os.NetworkOnMainThreadException
08-24 21:28:14.638: E/AndroidRuntime(11030):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:281)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:135)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at twitter4j.TwitterImpl.post(TwitterImpl.java:1965)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at twitter4j.TwitterImpl.updateStatus(TwitterImpl.java:264)
08-24 21:28:14.638: E/AndroidRuntime(11030):    at com.dante.sphar.PhotoPreviewActivity.onShareTwitter(PhotoPreviewActivity.java:228)
08-24 21:28:14.638: E/AndroidRuntime(11030):    ... 14 more  

更改异步任务后更新错误

08-24 21:48:56.223: W/System.err(12740): No authentication challenges found

08-24 21:48:56.223: W/System.err(12740): 相关讨论可以在互联网上找到: 08-24 21:48:56.223: W/System.err(12740): http://www.google.co.jp/search?q=b2b52c28或者 08-24 21:48:56.223: W/System.err(12740): http://www.google.co.jp/search?q=1206f231 08-24 21:48:56.223: W/System.err(12740): TwitterException{exceptionCode=[b2b52c28-1206f231 4ef6906d-2ed74fb5], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.5} 08-24 21:48:56.228:W/System.err(12740):在 twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177) 08-24 21:48:56.228:W/System.err(12740):在 twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61) 08-24 21:48:56.228: W/System.err(12740): 在 twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98) 08-24 21:48:56.228: W/System.err(12740): 在 twitter4j.TwitterImpl.post(TwitterImpl.java:1965) 08-24 21:48:56.228:W/System.err(12740):在 twitter4j.TwitterImpl.updateStatus(TwitterImpl.java:264) 08-24 21:48:56.228:W/System.err(12740):在 com.dante.sphar.PhotoPreviewActivity.postToTwitter(PhotoPreviewActivity.java:247) 08-24 21:48:56.228:W/System.err(12740):在 com.dante.sphar.PhotoPreviewActivity.access$1(PhotoPreviewActivity.java:236) 08-24 21:48:56.228:W/System.err(12740):在 com.dante.sphar.PhotoPreviewActivity$1.run(PhotoPreviewActivity.java:224) 08-24 21:48:56.228: W/System.err(12740): 在 java.lang.Thread.run(Thread.java:856) 08-24 21:48:56.228:W/System.err(12740):由:java.io.IOException:未找到身份验证挑战引起 08-24 21:48:56.228:W/System.err(12740):在 libcore.net.http.HttpURLConnectionImpl.getAuthorizationCredentials(HttpURLConnectionImpl.java:427) 08-24 21:48:56.233:W/System.err(12740):在 libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:407) 08-24 21:48:56.233:W/System.err(12740):在 libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:356) 08-24 21:48:56.233:W/System.err(12740):在 libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292) 08-24 21:48:56.233:W/System.err(12740):在 libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486) 08-24 21:48:56.233:W/System.err(12740):在 libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134) 08-24 21:48:56.233: W/System.err(12740): 在 twitter4j.internal.http.HttpResponseImpl.(HttpResponseImpl.java:34) 08-24 21:48:56.233: W/System.err(12740): 在 twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:141)

最佳答案

NetworkOnMainThreadException

The exception that is thrown when an application attempts to perform a networking operation on its main thread.

像这样在线程或异步任务中调用onShareTwitter:

Thread thread = new Thread(new Runnable(){
@Override
public void run() {
    try {
        //Your code goes here
        onShareTwitter(view);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
});

thread.start(); 

关于android - 分享推文时 Twitter4j 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472126/

相关文章:

java - android无法解析日期异常?

java - 在 android 中重写 getResourceAsStream()

android - 为什么在尝试检查 Corona SDK 时会出现此错误?

javascript - 嵌入式推文有时会在不同的浏览器上失去边界

python - 使用条件值将列添加到 txt

java - 浏览器不会将我重定向到 Twitter 进行授权

twitter4j - 如何使用 twitter4j 更改 twitter 流 api 上的关键字?

java - 无法运行 JAR - 使用 Java 进行 Spark Twitter Streaming

android - 如何在 Android Studio(Bumblebee | 2021.1.1)的不同窗口中打开模拟器?

c# - 使用 Twitter API 获取 protected 推文