我现在面临的问题是我的应用程序无法连接到互联网, 我通常在Bluestacks应用程序播放器和一台AVD设备上运行我的应用程序,并且我已授予以下权限
<uses-permission android:name="android.permission.INTERNET" />
要点:
1)我可以通过模拟器浏览器访问互联网 2)如果我在真实设备上运行,我的应用程序可以访问互联网。
代码示例:
Runtime runtime = Runtime.getRuntime();
try {
Process mIpAddrProcess = runtime.exec("/system/bin/ping -w 2 8.8.8.8");
mExitValue = mIpAddrProcess.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(mIpAddrProcess.getInputStream()));
int i;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((i = reader.read(buffer)) > 0)
output.append(buffer, 0, i);
reader.close();
String str = output.toString();
if (mExitValue == 0)
{
Toast.makeText(getApplicationContext(),"Connection ok"+ str, Toast.LENGTH_SHORT).show();
} else
{
Toast.makeText(getApplicationContext(), "Please Check Your Internet Connection"+str, Toast.LENGTH_SHORT).show();
//new Description().execute();
}
}
请帮帮我, 谢谢
答案 0 :(得分:0)
正如你所说,它适用于真实设备但不适用于模拟器。
这意味着你的应用程序代码是正确的,而且我们不需要在模拟器上运行应用程序。“/ p>
连接互联网时必定会有一些冲突。
如果您使用的wifi可能是问题,因为模拟器会尝试联系LAN适配器以获取DNS设置。
怎么做:
禁用您的LAN,然后与wifi连接。
这对我有用。希望你遇到同样的问题。
答案 1 :(得分:0)
此问题与您的模拟器访问Internet的配置有关。
请不要进行ping检查连接,而是可以使用此方法
public static boolean isOnline(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
}