1

我有一个问题,如果我尝试 InetAddress.getLocalHost() 甚至 InetAddress.getByName(String host) 它每次都会抛出异常,即使对于像 nba.com 这样的已知网站我有点困惑仅供参考,目标设备是一个 android 4.1.1 GS3 和 wifi 和移动网络都打开了。下面的代码

         try{
        InetAddress ownIP=InetAddress.getLocalHost();
        System.out.println("IP of my Android := "+ownIP.getHostAddress());
        }catch (Exception e){
            System.out.println("Exception caught ="+e.getMessage());
            String t =  e.getMessage() + "yes";
        }

下面是 System.out

03-12 18:59:52.636: I/System.out(18996): 异常捕获 =null

提前致谢

4

2 回答 2

2

我使用一种棘手的方法来获取自己的 IP。你可以看看它是否对你有帮助

String getIP() {
    try {
        Socket socket = new Socket("google.com", 80);
        return socket.getLocalAddress().getHostAddress();
    } catch (Exception e) {

    }
}
于 2013-03-13T02:34:06.900 回答
2

我相信我已经发现我的问题基本上是我猜你不允许在 android 的主线程中执行任何网络操作,这以前是可选的,现在是 Honeycomb (API 11) 所必需的,下面是根据谷歌规格。

“为防止阻塞主用户界面线程,Google 建议使用 android.os 包中的 AsyncTask 类:”

所以我只是创建了一个新类 NetTask,它扩展了 AsyncTask 并执行所有网络应用程序,所以现在我的代码可以工作了。IDK 如果其他人都知道,但我想我会发布这个,以防像我这样的新手仍在寻找解决方案:) !!!

谢谢

于 2013-03-24T15:02:31.540 回答