关于AndroidStudio声明了网络访问权限却无法访问网络的问题 |
您所在的位置:网站首页 › ipad应用程序网络权限怎么打开 › 关于AndroidStudio声明了网络访问权限却无法访问网络的问题 |
参考书目《第一行代码》第二版 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 |