为什么互联网不能在模拟器上运行,而是在真实设备上运行? (Android 工作室)

Why is the internet not working on emulator but working on real device? (Android Studio)

NOTE: This question is not intended to find a solution for a problem. It is directed towards finding information of why is the problem happening.

我创建了一个应用程序,它应该可以访问互联网。 但是我没有添加行

<uses-permission android:name="android.permission.INTERNET" /

到清单文件,这应该会导致应用程序无法访问互联网。它无法在模拟器中访问互联网(显然)。然而,在我的 phone 中,它工作得很好(即我可以通过应用程序访问互联网!!!)。

为什么会这样?

如果您正在创建 Intent 并在 Chrome 或其他非您的应用中打开 url,则您的应用不需要 INTERNET 权限。但是,如果您的应用将 WebView 作为 UI 组件,并且您尝试在此 WebView 上加载 url,则需要该权限。

为避免 loadUrl(...) 打开浏览器问题,请在调用 loadUrl(...) 之前添加此行:

myWebView.setWebViewClient(new WebViewClient());

如果您先 运行 模拟器然后连接到互联网,则模拟器和您的应用程序将无法连接互联网,因此请尝试关闭并再次打开模拟器。