2013-07-25 1 views
1

Oauth 프로세스에 twitter4j을 사용하려고합니다. Google을 열어 인터넷 연결이 지속되는 브라우저를 확인했습니다.Android4에서 Twitter4j이 다운 됨

다음 코드 스 니펫을 실행합니다. 내 활동 내에서이 코드를 실행하면 에뮬레이터 페이지에서 "불행히도 myapp가 닫힙니다."라는 메시지가 나타납니다. Logcat 내부에서는 "ccc : trying1"만 볼 수 있습니다. 나는 "시도 2"가 보이지 않는다.

아마도이 오류는 twitter4j 때문에 발생하지는 않지만 오류를 찾을 수 없습니다.

Twitter twitter = TwitterFactory.getSingleton(); 
    twitter.setOAuthConsumer("12345", "aaaa1212"); 
    RequestToken requestToken = null; 
    try { 
     Log.d("ccc","trying1"); 
     requestToken = twitter.getOAuthRequestToken(); 
     Log.d("ccc","trying2"); 
    } catch (TwitterException e) { 
     Log.d("unsuccess message:",e.getMessage()); 
     Log.d("unsuccess statuscode:", Integer.toString(e.getStatusCode())); 
     Log.d("unsuccess errormessage:",e.getErrorMessage()); 
     e.printStackTrace(); 
    } 

응용 프로그램 :
의 minSdkVersion = "10"안드로이드
targetSdkVersion을 = "17"
에뮬레이터 버전 또한 관련 4.2.2

: Twitter4j getOAuthRequestToken() with callback URL fails on Android?

편집 : 궁금 해요 not-async 요청이 문제가 될 수 있습니다. 동일한 코드가 Android 2.3.3에서 완벽하게 작동하기 때문입니다.

편집 2 : android.os.NetworkOnMainThreadException이 나옵니다. 이 같은 로그 캣 항목 :

07-24 23:29:40.190 5455-5455/com.myexample.android D/ccc: trying1 
07-24 23:29:40.520 5455-5455/com.myexample.android D/AndroidRuntime:  Shutting down VM 
07-24 23:29:40.535 5455-5455/com.myexample.android W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xb4db7908) 
07-24 23:29:40.660 5455-5455/com.myexample.android E/AndroidRuntime: FATAL EXCEPTION: main 
    java.lang.RuntimeException: 
     Unable to start activity    
     ComponentInfo{com.myexample.android/com.myexample.android.MyActivity}: 
     android.os.NetworkOnMainThreadException 

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
    at android.app.ActivityThread.access$600(ActivityThread.java:141) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5039) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.os.NetworkOnMainThreadException 
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
    at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
    at java.net.InetAddress.getAllByName(InetAddress.java:214) 
    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) 
    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
    at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) 
    at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 
    at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
    at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) 
    at libcore.net.http.HttpEngine.connect(HttpEngine.java:311) 
    at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) 
    at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) 
    at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81) 
    at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197) 
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:150) 
    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61) 
    at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98) 
    at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:122) 
    at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:104) 
    at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:281) 
    at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:273) 
    at com.myexample.android.MyActivity.onCreate(MyActivity.java:136) 
    at android.app.Activity.performCreate(Activity.java:5104) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
    ... 11 more 
+0

인터넷 사용 권한이 있습니까?

+0

예 매니페스트 파일 내에 해당 권한이 있습니다. – trante

+0

충돌의 전체 스택 추적을 게시 할 수 있습니까? 응용 프로그램이 손상되었을 수 있습니다.) –

답변

2

당신 예외 이름이 모두 'NetworkOnMainThreadException'

메인/UI 스레드에서 네트워크 호출을하고 있다고 말했습니다.

new Thread(new Runnable() { 
    // your code 
}).start(); 

편집 :

같은 별도의 스레드 나 AsyncTask를이 코드를 실행하려고 메인 스레드에서 인터넷 접속을 할 경우 2.3 안드로이드는 확인하지 않습니다 (그 때문에 우리 모두가이 버전을 떠날 필요 Android behind;))