18

Androidエミュレーターでこれが機能しない理由を誰か教えてもらえますか? ブラウザからアクセスでき、サーバーは内部です。私が考えることができるのは、ネットワーク層にアクセスできるように、アプリの構成が不足していることだけです。

try {
    InetAddress server = Inet4Address.getByName("thehost");
    //Doesn't work either
    //or InetAddress server2 = Inet4Address.getByAddress(new String("192.168.1.30").getBytes());

    if(server.isReachable(5000)){
        Log.d(TAG, "Ping!");
    }

    Socket clientsocket = new Socket(server, 8080);
} catch (UnknownHostException e) {
    Log.e(TAG, "Server Not Found");
} catch (IOException e) {
    Log.e(TAG, "Couldn't open socket");
}

UnknownHostException をスローします

ありがとう

4

2 に答える 2

32

構成に関する限り、アプリケーションからインターネットにアクセスするために必要な唯一の設定は、アプリケーションマニフェスト内のアプリケーションタグの外側に次の行を追加することで有効になるインターネットアクセス許可です。

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

したがって、マニフェストはこの一般的な構造に従います

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.apis">    
  <uses-permission android:name="android.permission.INTERNET" />
  <application 
    android:name="MyApplication"    
    android:label="@string/application_title"
    android:icon="@drawable/my_icon">
    [ .. Your Activities go here ]
  </application>
</manifest>
于 2009-01-14T10:58:28.243 に答える
2

タイムアウトのため、まだ機能しない可能性があります。ICMP パッケージを送信するには root 権限が必要であり、isReachable の実装では ECHO の低速 TCP バージョンが使用されるためです。javaDoc をチェックアウトします。

于 2009-10-02T11:23:02.930 に答える