Java Twitter4j在Android 4中崩溃

Java Twitter4j在Android 4中崩溃,java,android,twitter4j,Java,Android,Twitter4j,我正在尝试使用Oauth进程。我检查了android浏览器,打开谷歌后,互联网连接依然存在 我运行以下代码段。当我在我的活动中运行这段代码时,我在模拟器页面中看到“不幸的是,我的应用程序被关闭了”。在Logcat内部,我只看到:“ccc:trying1”。我看不到“尝试2” 可能这个错误不是因为twitter4j,但是我找不到这个错误 Twitter twitter = TwitterFactory.getSingleton(); twitter.setOAuthConsumer

我正在尝试使用Oauth进程。我检查了android浏览器,打开谷歌后,互联网连接依然存在

我运行以下代码段。当我在我的活动中运行这段代码时,我在模拟器页面中看到“不幸的是,我的应用程序被关闭了”。在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”
仿真器版本Android 4.2.2

还涉及:

编辑:我很好奇,非异步请求可能是问题所在。因为同样的代码对Android2.3.3非常有效

Edit2:我得到了android.os.NetworkOnMainThreadException。Logcat条目如下所示:

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
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:关闭虚拟机
07-24 23:29:40.535 5455-5455/com.myexample.android W/dalvikvm:threadid=1:线程以未捕获异常退出(组=0xb4db7908)
07-24 23:29:40.660 5455-5455/com.myexample.android E/AndroidRuntime:FATAL EXCEPTION:main
java.lang.RuntimeException:
无法启动活动
ComponentInfo{com.myexample.android/com.myexample.android.MyActivity}:
android.os.NetworkOnMainThreadException
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
在android.app.ActivityThread.access$600(ActivityThread.java:141)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:5039)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
在dalvik.system.NativeStart.main(本机方法)
原因:android.os.NetworkOnMainThreadException
在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
位于java.net.InetAddress.lookupHostByName(InetAddress.java:385)
位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
位于java.net.InetAddress.getAllByName(InetAddress.java:214)
位于libcore.net.http.HttpConnection。(HttpConnection.java:70)
在libcore.net.http.HttpConnection上。(HttpConnection.java:50)
位于libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
位于libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
位于libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
位于libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
位于libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
位于libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
位于libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
位于libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
位于libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197)
在twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:150)处
位于twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
位于twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
在twitter4j.auth.oauthorization.getOAuthRequestToken(OAuthorization.java:122)
在twitter4j.auth.oauthorization.getOAuthRequestToken(OAuthorization.java:104)
位于twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:281)
位于twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:273)
位于com.myexample.android.MyActivity.onCreate(MyActivity.java:136)
位于android.app.Activity.performCreate(Activity.java:5104)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)上
... 还有11个

您的异常名称显示了“NetworkOnMainThreadException”

您正在主/UI线程上进行网络调用

尝试在单独的线程或异步任务中执行此代码,如:

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

编辑:Android 2.3不会检查你是否在主线程上访问互联网(因此我们都需要将这个版本的Android留在后面;)

你有互联网权限吗?是的,我在我的清单文件中有这个权限。你能发布你的整个坠机记录吗?你必须拥有它,因为应用程序已崩溃;)到目前为止,您无法在UI线程上执行网络操作,请参阅问题。