http://10.0.2.2适用于android模拟器但不适用于用作模拟器的android设备

我通过USB连接我的Android设备使用它作为模拟器,如果我从eclipse模拟器访问它的工作但它是相同的,如果我从设备访问作为模拟器它给出连接超时错误。

我需要更改此设置吗? 或者有什么可能的解决方案吗?

谢谢

这是我必须要做的,以便让设备在我的运行在localhost上的Windows PC上获取本地服务实例。

  • 在我的设备上打开WiFi并连接到无线网络。
  • 在命令提示符下运行ipconfig。
  • 使用IPv4地址进行以太网适配器本地连接(因为我通过以太网连接)
  • 更改android应用程序中的基本URL以使用该地址

然后我的android应用程序能够通过该IP地址而不是10.0.2.2连接到本地服务实例,当您在模拟器上运行应用程序时,它可以正常工作。 如果有人如此倾向,您可以提取这些URL并检查应用程序是否在模拟器或设备上运行,然后在代码中正确设置IP地址。 希望这可以帮助。

关于上面的url提取进行编辑 – 我创建了一个ApplicationName.java文件并声明了这个变量:

public static String ANDROID_DEVICE_ID = ""; 

然后在我的初始活动中设置该变量:

 ApplicationName.ANDROID_DEVICE_ID = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID); 

然后我复制粘贴该设备Id,并在我的api类中进行Web服务调用我有以下代码:

 private String getCategoriesUrl() { // TODO: Remove before production if (AgoraApplication.ANDROID_DEVICE_ID.equals("deviceIdString")) { _categoriesUrl = _deviceIp + _categoriesUrlSuffix; } else { _categoriesUrl = _emulatorIp + _categoriesUrlSuffix; } return _categoriesUrl; } 

因此,当我在设备或模拟器上进行调试时,我的应用程序会自动使用适当的IP地址进行服务调用。

你在这里假设设备行为像模拟器。 它绝对是独立运行您的应用程序,而不是模拟或模拟。 您必须将IP地址调整为计算机的IP地址,手机可以通过其网络,手机或Wifi查看。