上个星期左右,我一直在努力让它发挥作用,但仍然不知道问题出在哪里。它适用于android 2.1,但不适用于4.1。我在一个服务中得到了这个字符串,该服务检查我应用程序中的更新。
latestVersion = Integer.parseInt(getHttpString(urlLatestVersion));
它在checkForUpdate()中调用;在onStart(Intent-Intent,int-startId)中调用;。
private String getHttpString(String urlString) throws IOException {
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP connection");
try {
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
} catch (Exception ex) {
ex.printStackTrace();
//
//main error currently lies here
// TODO fix errors that accures on android 4.0 and above.
//
}
if (in != null) {
StringBuilder sb = new StringBuilder();
String line;
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(in, "UTF-8"));
while ((line = reader.readLine()) != null) {
sb.append(line); // .append("\n");
}
} finally {
in.close();
}
return sb.toString();
} else
return "";
}
这是logcat的错误
W/System.err( 7077): android.os.NetworkOnMainThreadException
W/System.err( 7077): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
W/System.err( 7077): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
W/System.err( 7077): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
W/System.err( 7077): at java.net.InetAddress.getAllByName(InetAddress.java:214)
W/System.err( 7077): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
W/System.err( 7077): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
W/System.err( 7077): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
W/System.err( 7077): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
W/System.err( 7077): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
W/System.err( 7077): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
W/System.err( 7077): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
W/System.err( 7077): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
W/System.err( 7077): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
W/System.err( 7077): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
W/System.err( 7077): at com.lukemovement.roottoolbox.pro.Update.getHttpString(Update.java:166)
W/System.err( 7077): at com.lukemovement.roottoolbox.pro.Update.checkForUpdate(Update.java:98)
W/System.err( 7077): at com.lukemovement.roottoolbox.pro.Update.onStart(Update.java:75)
W/System.err( 7077): at android.app.Service.onStartCommand(Service.java:450)
W/System.err( 7077): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2620)
W/System.err( 7077): at android.app.ActivityThread.access$1900(ActivityThread.java:143)
W/System.err( 7077): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
W/System.err( 7077): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 7077): at android.os.Looper.loop(Looper.java:137)
W/System.err( 7077): at android.app.ActivityThread.main(ActivityThread.java:4935)
W/System.err( 7077): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 7077): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 7077): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
W/System.err( 7077): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
W/System.err( 7077): at dalvik.system.NativeStart.main(Native Method)
I/Example update( 7077): Invalid int: ""
那么,Android是放弃了向后兼容,还是刚刚忘记添加这一点?
我读到我需要使用AsyncTask。但我似乎无法让它为我工作,有人能帮我吗?
只需在oncreateu调用Asynck的活动中添加此代码。
代码:-
StrictMode.ThreadPolicy policy =
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
从Android API v15开始,它不需要在主线程上进行繁重的处理。因此,您应该将逻辑转移到另一个线程,如下面的源代码:
new Thread(new Runnable() {
public void run() {
// your logic
}
}).start();
更多信息请参阅:响应性
问题内容: 我正在尝试从Java代码怪胎中为我的首选示例之一修复线程错误。 这是代码: RetrieveFeedTask: 做到无误的最佳方法是什么?当前正在显示Toast错误(?)。 问题答案: 您无法在中做任何事情。因此,您不能在那里显示一个。您需要将此移动到其他地方。可能 你可以调用,并显示在或到并显示它。您还可以选择将数据发送回方法 异步任务
在这里,我正在使用此代码加载Json。它可以在android 2.2上正常工作,但当我使用android 4.2时,它会引发android.os.NetworkOnMainThreadException异常,请给我解决方案 } 我也在使用谷歌api。
其中“url”是JSON格式的,它使用http GET方法返回大量数据。 我无法从我在getResultForRequest(url)方法中传递的“url”中获取JSON格式的数据。我在urlConnection.connect();中出错。Internet权限也在AndroidManifest.xml文件中给出。 这是我的日志。 提前谢谢。
所以我刚刚创建了一个应用程序,而已经存在编译器错误: 无法解析符号“r” 我在Android Studio看到这个问题不能解决R吗?但是我的项目的清理和重建并没有产生任何效果。
所以出于某种原因,编译器一直说“输入”永远不会关闭。但是,程序运行并执行。我只是想知道为什么它一直这么说。下面是语法。提前谢谢。 在此输入图像描述
我的文件中有以下ReactJs组件/我的输入。反应js 现在我试着把它导入到。/index.js像这样: 控制台将返回错误: 您刚才遇到的错误全文如下: 这有什么错?