我正在开发一个安卓应用程序,我想让它显示网络上所有的IP地址,我已经在一个java应用程序中使用过它,它工作得很好,但是当我在一个安卓应用程序中使用它时,当它到达InetAddress.getLocalHost()时,它会崩溃,这在安卓应用程序上可以工作吗,或者有其他方法可以做到吗?
代码
InetAddress localhost = null;
try {
localhost = InetAddress.getLocalHost(); // it crashes here
System.out.println("after");
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
System.out.println("the application stoped here");
e1.printStackTrace();
}
System.out.println("3");
// this code assumes IPv4 is used
byte[] ip = localhost.getAddress();
for (int i = 0; i <= 254; i++) {
ip[3] = (byte) i;
InetAddress address = null;
try {
address = InetAddress.getByAddress(ip);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PingThread p = new PingThread(address);
p.start();
}发布于 2015-08-25 22:40:04
您可以通过在try/catch之前将此代码添加到代码中来解决此问题:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);将此命令...and到您的AndroidManifest文件:
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>有关StrictMode的更多详细信息,请参阅Android Docs。
https://stackoverflow.com/questions/22525561
复制相似问题