gpt4 book ai didi

java - 检查 Android 上的页面是否已启动会导致崩溃吗?

转载 作者:行者123 更新时间:2023-12-02 00:04:26 24 4
gpt4 key购买 nike

我对 Android 还很陌生。我已经用 Java 完成了一些工作,所以我返回并找到了我的站点状态检查器。

我的想法是,因为 Android 是基于 Java 的,所以我可以直接复制到 Android 应用程序。

这是我的 fragment :

public boolean checkIfSite(String url) {
HttpURLConnection connection = null;
try {
URL u = new URL(url);
connection = (HttpURLConnection) u.openConnection();
connection.setRequestMethod("HEAD");
int code = connection.getResponseCode();
System.out.println("" + code);
// You can determine on HTTP return code received. 200 is success.

return true;
} catch (MalformedURLException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}

我这样调用它:

if (checkIfSite("http://google.com")) {
//CODE
}

这是我得到的跟踪:

    01-05 08:58:49.683: D/AndroidRuntime(9767): Shutting down VM
01-05 08:58:49.683: W/dalvikvm(9767): threadid=1: thread exiting with uncaught exception (group=0x40a211f8)
01-05 08:58:49.691: E/AndroidRuntime(9767): FATAL EXCEPTION: main
01-05 08:58:49.691: E/AndroidRuntime(9767): android.os.NetworkOnMainThreadException
01-05 08:58:49.691: E/AndroidRuntime(9767): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
01-05 08:58:49.691: E/AndroidRuntime(9767): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
01-05 08:58:49.691: E/AndroidRuntime(9767): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
01-05 08:58:49.691: E/AndroidRuntime(9767): at java.net.InetAddress.getAllByName(InetAddress.java:220)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
01-05 08:58:49.691: E/AndroidRuntime(9767): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479)
01-05 08:58:49.691: E/AndroidRuntime(9767): at com.sonyericsson.extras.liveview.plugins.sandbox.SandboxPluginService.checkIfSite(SandboxPluginService.java:184)
01-05 08:58:49.691: E/AndroidRuntime(9767): at com.sonyericsson.extras.liveview.plugins.sandbox.SandboxPluginService.button(SandboxPluginService.java:209)
01-05 08:58:49.691: E/AndroidRuntime(9767): at com.sonyericsson.extras.liveview.plugins.AbstractPluginService$LiveViewCallback$3.run(AbstractPluginService.java:200)
01-05 08:58:49.691: E/AndroidRuntime(9767): at android.os.Handler.handleCallback(Handler.java:605)
01-05 08:58:49.691: E/AndroidRuntime(9767): at android.os.Handler.dispatchMessage(Handler.java:92)
01-05 08:58:49.691: E/AndroidRuntime(9767): at android.os.Looper.loop(Looper.java:137)
01-05 08:58:49.691: E/AndroidRuntime(9767): at android.app.ActivityThread.main(ActivityThread.java:4424)
01-05 08:58:49.691: E/AndroidRuntime(9767): at java.lang.reflect.Method.invokeNative(Native Method)
01-05 08:58:49.691: E/AndroidRuntime(9767): at java.lang.reflect.Method.invoke(Method.java:511)
01-05 08:58:49.691: E/AndroidRuntime(9767): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
01-05 08:58:49.691: E/AndroidRuntime(9767): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
01-05 08:58:49.691: E/AndroidRuntime(9767): at dalvik.system.NativeStart.main(Native Method)

最佳答案

您是否考虑过通过添加permission来让您的App上线?至 AndroidMainfest.xml文件?该文件位于项目结构的顶层,如 srcres 文件夹。

<manifest xlmns:android...>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
...
</manifest>

当您尝试在 UI 线程上执行网络操作时,会引发异常。解决方案here ...

有关 AsyncTask 的更多信息:

关于java - 检查 Android 上的页面是否已启动会导致崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com