关于AndroidStudio声明了网络访问权限却无法访问网络的问题

您所在的位置:网站首页 ipad应用程序网络权限怎么打开 关于AndroidStudio声明了网络访问权限却无法访问网络的问题

关于AndroidStudio声明了网络访问权限却无法访问网络的问题

2023-07-23 02:24| 来源: 网络整理| 查看: 265

参考书目《第一行代码》第二版 AndroidStudio版本:3.5.2 SDK版本:Android9.0 在尝试访问网络时使用Okhttp(4.1.0)代码如下:

private void sendRequestWithOkHttp(){ new Thread(new Runnable(){ @Override public void run() { try { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://www.baidu.com") .build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); showResponse(responseData); }catch (Exception e){ e.printStackTrace(); } } }).start(); } void showResponse(final String response) { runOnUiThread(new Runnable() { @Override public void run() { reponseTest.setText(response); } }); }

按钮点击事件触发sendRequestWithOkHttp();创建网络访问线程,GET服务器的数据,返回为字符串调用showResponse();显示在文本框中。运行程序无法拿到数据。 查看运行信息,发现:

/System.err: java.net.UnknownServiceException: CLEARTEXT communication to www.baidu.com not permitted by network security policy System.err: at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:35)

不允许进行通信????? 在这里插入图片描述 我明明已经在AndroidManifest.xml中声明网络权限了,

上网搜索发现:

为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输。

诶,巧了。刚好我是Android9.0的SDK,查看解决办法,发现可以通过更改网络安全配置解决。

解决步骤:

首先,在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件,文件内容如下:

然后,在AndroidManifest.xml文件下的application标签增加以下属性



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3