如何解决连接到10.0.2.2的安卓模拟器无法工作

817 阅读1分钟

很多安卓开发者在本地服务器上测试他们的安卓应用。一般来说,他们使用不同类型的安卓库,例如,Volley库来连接应用程序和本地主机。安卓模拟器支持10.0.2.2来连接本地主机。

有时,当开发者向服务器发出请求时,他们会面临一些与localhost连接的问题,例如

com.android.volley.NoConnectionError: java.io.IOException: HTTP traffic to 10.0.2.2 not permitted

但如果我们尝试向其他URL发送HTTP请求,除了10.0.2.2,它的工作是正常的,没有问题。

一般来说,127.0.0.1是本地主机,但在Android模拟器的情况下,它使用10.0.2.2作为本地主机。

那么如何解决HTTP流量到10.0.2.2不允许的问题呢?

因此,我们需要在我们的Android清单文件中增加一行,即

android:usesCleartextTraffic="true"

这个 usesCleartextTraffic属性由Android 6.0(Marshmallow)引入。默认情况下,这个属性的值是假的。我们需要在清单文件中将其设置为"true"。因此,代码看起来是这样的。

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:usesCleartextTraffic="true"
        -------------------
    >
    </application>
</manifest>