我通过USB连接我的Android设备以将其用作模拟器,如果我从eclipse模拟器访问URL它可以工作,但如果我从设备访问模拟器它会给出连接超时错误。
我需要更改此设置吗?或者有任何可能的解决方案吗?
由于
答案 0 :(得分:5)
以下是为了让设备在运行localhost的Windows PC上获取本地服务实例而必须做的事情。
然后我的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地址进行服务调用。
答案 1 :(得分:2)
你在这里假设设备行为就像一个模拟器。它肯定是独立运行您的应用程序,而不是模拟或模拟。您必须将IP地址调整为手机可以从其网络,手机或Wifi上看到的计算机IP地址。