2

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

请帮帮我,谢谢

4

2 回答 2

1

此问题与您的模拟器配置访问互联网有关。

并且请不要通过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();
}
于 2019-07-31T00:54:16.173 回答
0

正如您所说,它适用于真实设备但不适用于模拟器。

这意味着您的应用程序在代码方面是正确的,而且我们无需额外编码即可在模拟器上运行应用程序。

连接到互联网时必须有一些冲突。

如果您使用的 wifi 可能是问题所在,因为模拟器会尝试联系 LAN 适配器以获取 DNS 设置。

该怎么办:

禁用您的 LAN,然后连接 wifi。

这对我有用。希望你有同样的问题。

于 2016-02-10T06:56:26.707 回答