【问题标题】:Error when using isReachable() in Android在 Android 中使用 isReachable() 时出错
【发布时间】:2013-02-26 12:21:56
【问题描述】:

我是安卓开发的新手。这是我的代码

boolean isReachable = false;
try{
    isReachable = InetAddress.getByName(MyIPAddress).isReachable(reachableTimeout);
} catch (Exception e){
    Log.e("InetAddress", e.getMessage());
}finally {
    if (!onlyReachables || isReachable) {
        // Do something
    }
}

当我的AndroidManifest.xml 没有这些行时,它可以正常工作

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

当它运行时,我的应用程序“不幸的是,myApp 已停止”

谁能帮忙解决一下?

我的 Logcat:

E/AndroidRuntime(9310): FATAL EXCEPTION: main
E/AndroidRuntime(9310): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.thesis.wifihotspot/com.thesis.wifihotspot.MainActivity}:
java.lang.NullPointerException: println needs a message
E/AndroidRuntime(9310):     at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
E/AndroidRuntime(9310):     at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
E/AndroidRuntime(9310):     at
android.app.ActivityThread.access$700(ActivityThread.java:140)
E/AndroidRuntime(9310):     at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
E/AndroidRuntime(9310):     at
android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(9310):     at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(9310):     at
android.app.ActivityThread.main(ActivityThread.java:4921)
E/AndroidRuntime(9310):     at
java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(9310):     at
java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(9310):     at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
E/AndroidRuntime(9310):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
E/AndroidRuntime(9310):     at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(9310): Caused by: java.lang.NullPointerException:
println needs a message
E/AndroidRuntime(9310):     at android.util.Log.println_native(Native Method)
E/AndroidRuntime(9310):     at android.util.Log.e(Log.java:297)
E/AndroidRuntime(9310):     at
com.thesis.wifihotspot.MainActivity.setClientsList(MainActivity.java:226)
E/AndroidRuntime(9310):     at
com.thesis.wifihotspot.MainActivity.onCreate(MainActivity.java:58)
E/AndroidRuntime(9310):     at
android.app.Activity.performCreate(Activity.java:5206)
E/AndroidRuntime(9310):     at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
E/AndroidRuntime(9310):     at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
E/AndroidRuntime(9310):     ... 11 more

更新: 根据此link,从 Android 3.0 (Honeycomb) 开始,如果在用户界面线程中访问网络,则 StrictMode 被配置为因 NetworkOnMainThreadException 异常而崩溃。所以我需要添加这些代码才能使应用正常运行。

StrictMode.ThreadPolicy 策略 = 新的 StrictMode。 ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);

感谢您的支持。

【问题讨论】:

  • 请从 logcat 发布异常堆栈跟踪
  • @Simon 这是我的日志:
  • E/AndroidRuntime(9310): Caused by: java.lang.NullPointerException: println needs a message E/AndroidRuntime(9310): at android.util.Log.println_native(Native Method) E/AndroidRuntime(9310): at android.util.Log.e(Log.java:297) E/AndroidRuntime(9310): at com.thesis.wifihotspot.MainActivity.setClientsList(MainActivity.java:226) 第 226 行是什么?
  • _ClientsList = (ListView)findViewById(R.id.lvClients); try { ArrayList&lt;ClientScanResult&gt; _ClientResult = _WifiApManager.getClientList(false); _ClientsList.setAdapter(new AdapterForLVClients(_ClientResult,this)); }catch(Exception e) { Log.e(this.getClass().toString(), e.getMessage()); }; 就是 Log.e(this.getClass().toString(), e.getMessage());
  • @Simon getClientList(Boolean)方法包含了上面的代码

标签: java android inetaddress


【解决方案1】:

这可能与您的问题无关,但如果您有 IP 地址,则应使用 getByAddress 而不是 getByName

isReachable = InetAddress.getByAddress(MyIPAddress).isReachable(reachableTimeout);

这是documentation

编辑:

你有一个没有任何消息的异常。 首先,删除e.getMessage()。 然后,如果您需要解决问题,请显示更多代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-24
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多