我的Android应用程序无法在模拟器上访问互联网,但在真实设备上工作正常

时间:2016-02-10 06:39:56

标签: android android-emulator bluestacks

我现在面临的问题是我的应用程序无法连接到互联网, 我通常在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();
            }
        }

请帮帮我, 谢谢

2 个答案:

答案 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();
}