有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java地址。Android上的getByName

我做了一个:

java.net.InetAddress serverAddr;
try {
    serverAddr = java.net.InetAddress.getByName(Server.SERVERNAME);
}
catch (java.net.UnknownHostException exception) {
    //System.err.println ("wrong server name !!!");
    HelloWorldActivity.tv.setText("wrong server name !!!");
    return;
}

在我的安卓应用程序中,它从不解析主机名,无论我使用什么名称,它都会抛出一个异常


但在同一个模拟器上使用互联网是可行的,我补充说

<uses-permission 安卓:name="安卓.permission.INTERNET" />
<uses-permission 安卓:name="安卓.permission.ACCESS_NETWORK_STATE" />

来证明。xml

这是一个服务器类,适用于那些认为我没有服务器的人

public class Server
{
    public static String SERVERNAME = "monster.idsoftware.com";
    public static String SERVERIP = "209.85.129.99";
    public static int SERVERPORT = 27950;
    public static int PROTOCOL = 68;
}

共 (2) 个答案

  1. # 1 楼答案

    我也遇到了类似的问题,我发现在某些版本的android(来自honeycombs)中,默认情况下不允许从主线程执行网络操作。所以你可以用两种方法来解决它。在不同线程中执行操作或允许在主线程中进行网络操作。要做到这一点,请使用以下方法:

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
    StrictMode.setThreadPolicy(policy);
    
  2. # 2 楼答案

    不知道是不是打字错误,但你说你有:

    <use-permission id="android.permission.INTERNET" />
    

    但必须是:

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

    我试过getByName,效果很好

    您是否已修复权限并同时从getByName切换到getAllByName?只是好奇,如果你能确认getByName仍然不适合你