2015-09-01 36 views
1

[編輯] 我想從twitter使用twitter4j版本4.0.4作爲庫搜索一些推文。這是我的方法twitter4j錯誤當搜索推特

public void processAll(View view){ 
    Log.d("click","OKE"); 
    ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true) 
      .setOAuthConsumerKey("xxxxx") 
      .setOAuthConsumerSecret("xxxx") 
      .setOAuthAccessToken("7xxxxL") 
      .setOAuthAccessTokenSecret("xxxxx"); 
    TwitterFactory tf = new TwitterFactory(cb.build()); 
    Twitter twitter = tf.getInstance(); 
    Log.d("connected","OKE"); 

    try { 
     Query query = new Query("handsome"); 
     Log.d("TEST","OKE"); 
     QueryResult result = twitter.search(query); 
     List<Status> tweets = result.getTweets(); 
     for (Status tweet : tweets) { 
      Log.d("RESULT","@" + tweet.getUser().getScreenName() + " - " + tweet.getText()); 
     } 
    } 
    catch (TwitterException te) { 
     te.printStackTrace(); 
     Log.d("RESULT","Failed to search tweets: " + te.getMessage()); 
     return; 
    } 

} 

但是,當我們的應用程序被調用時,我的應用程序停止。到

QueryResult result = twitter.search(query); 

這裏我完全logcat的

09-01 21:17:52.862 12562-12562/com.fajarainul.coconut_dev.titikota E/Spinner﹕ setPopupBackgroundDrawable: incompatible spinner mode; ignoring... 
09-01 21:17:53.947 12562-12562/com.fajarainul.coconut_dev.titikota E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.fajarainul.coconut_dev.titikota, PID: 12562 
    java.lang.IllegalStateException: Could not execute method of the activity 
      at android.view.View$1.onClick(View.java:3834) 
      at android.view.View.performClick(View.java:4461) 
      at android.view.View$PerformClick.run(View.java:18523) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5118) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at android.view.View$1.onClick(View.java:3829) 
      at android.view.View.performClick(View.java:4461) 
      at android.view.View$PerformClick.run(View.java:18523) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5118) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.os.NetworkOnMainThreadException 
      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1148) 
      at java.net.InetAddress.lookupHostByName(InetAddress.java:405) 
      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:251) 
      at java.net.InetAddress.getAllByName(InetAddress.java:229) 
      at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28) 
      at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216) 
      at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122) 
      at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292) 
      at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255) 
      at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206) 
      at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345) 
      at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) 
      at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503) 
      at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136) 
      at twitter4j.HttpResponseImpl.<init>(HttpResponseImpl.java:35) 
      at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:142) 
      at twitter4j.HttpClientBase.request(HttpClientBase.java:53) 
      at twitter4j.HttpClientBase.get(HttpClientBase.java:71) 
      at twitter4j.TwitterImpl.get(TwitterImpl.java:1556) 
      at twitter4j.TwitterImpl.search(TwitterImpl.java:247) 
      at com.fajarainul.coconut_dev.titikota.SetTimeActivity.processAll(SetTimeActivity.java:70) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at android.view.View$1.onClick(View.java:3829) 
      at android.view.View.performClick(View.java:4461) 
      at android.view.View$PerformClick.run(View.java:18523) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5118) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
      at dalvik.system.NativeStart.main(Native Method) 

感謝

at com.fajarainul.coconut_dev.titikota.SetTimeActivity.processAll(SetTimeActivity.java:68) 

引用提前!

+0

你在你的清單了互聯網的權限? –

+0

是的,我有..但仍然沒有工作... –

+0

您可以請您複製您的完整日誌stacktrace到您的問題,而不是提供圖像 –

回答

1

您正在丟棄NetworkOnMainThreadException這意味着您正試圖在應用程序主線程上運行網絡代碼(即通過twitter API運行搜索)。

您需要使用類似AsyncTask(請參閱docs)的代碼將其移動到後臺線程才能正常工作。

我建議閱讀的文檔,也響應前一個問題上的SO:How to fix android.os.NetworkOnMainThreadException?

+0

謝謝,我會嘗試你的建議,並讓你知道.. –