1

私はアンドロイド開発の初心者です。これは私のコードです

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は停止しました」

誰かがそれを修正するのを助けることができますか?

私のログキャット:

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

更新:このリンクに よると、Android 3.0 (Honeycomb) の時点で、ネットワークがユーザー インターフェイス スレッドでアクセスされた場合、StrictMode は NetworkOnMainThreadException 例外でクラッシュするように構成されています。したがって、アプリを機能させるには、これらのコードを追加する必要があります。

StrictMode.ThreadPolicy ポリシー = 新しい StrictMode. ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(ポリシー);

ご支援いただきありがとうございます。

4

1 に答える 1

0

おそらく問題とは関係ありませんが、IP アドレスを持っている場合getByAddressではなく、使用する必要があります。getByName

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

これがドキュメントです。

編集:

メッセージのない例外があります。まず、削除しe.getMessage()ます。次に、問題を解決する必要がある場合は、コードをさらに表示します。

于 2013-02-23T15:10:53.527 に答える