尽管清单上设置了互联网权限,但我无法在 Android 设备上获取我的 ip

vgo*_*anz 3 java sockets android android-manifest

我在 ubuntu 上使用 eclipse + android SDK,并使用套接字运行测试活动服务器。

我的清单有互联网权限

<uses-permission android:name="INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

但是当我使用以下方法在设备上查找我的 IP 时:

    // gets the ip address of your device
private String getLocalIpAddress() 
{
    try 
    {
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) 
        {
            NetworkInterface intf = en.nextElement();
            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) 
            {
                InetAddress inetAddress = enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); }
            }
        }
    } 
    catch (SocketException ex) 
    {
        Log.e("ServerActivity", ex.toString());
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我在 Logcat 上遇到异常:

Java.net.SocketException: Permission denied
Run Code Online (Sandbox Code Playgroud)

标签:MyActivity,但我对清单有互联网许可。

如果我尝试手动放置 IP,当我使用套接字时,我也会遇到 TAG 异常:System.err

关于这个问题的一些想法?

提前致谢。

Jav*_*ock 5

我认为您必须在清单 xml 中以这种方式编写权限:

<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

而不仅仅是“互联网”。试试看以防万一。

  • 是的,问题是。非常感谢 Jav_Rock。我是个笨蛋。 (2认同)