我通過USB連接我的android設備,將其用作模擬器,如果我從eclipse emulator訪問URL,如果我從設備作爲仿真器進行訪問,則會導致連接超時錯誤。http://10.0.2.2適用於Android模擬器,但不適用於作爲模擬器使用的Android設備
有沒有需要改變的設置?或者有沒有可能的解決方案?
感謝
我通過USB連接我的android設備,將其用作模擬器,如果我從eclipse emulator訪問URL,如果我從設備作爲仿真器進行訪問,則會導致連接超時錯誤。http://10.0.2.2適用於Android模擬器,但不適用於作爲模擬器使用的Android設備
有沒有需要改變的設置?或者有沒有可能的解決方案?
感謝
你在這裏做一個假設,即設備的行爲喜歡的模擬器。這絕對是獨立運行你的應用程序,而不是模擬或模擬。您必須將IP地址調整爲您的計算機的IP地址,手機可以通過其網絡,手機或Wifi查看IP地址。
這是我爲了讓設備在本地主機上運行的windows PC上獲取本地服務實例而必須做的。
然後我的Android應用程序能夠通過該IP地址連接到本地服務實例,而不是10.0.2.2,這在您在模擬器上運行應用程序時起作用。如果有人這麼傾向,你可以提取這些URL並檢查應用程序是否在模擬器或設備上運行,然後在代碼中正確設置IP地址。希望這可以幫助。
編輯對於上述網址提取 - 我創建了一個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地址進行服務調用。
Windows/Linux下或Android下的防火牆設置?此外,IP有點寬。 –
@Joop你問我還是想看看特定的防火牆設置? – BreakHead