解决android 9上无法使用http协议
用户反应本来好用的app,突然无法访问服务器,不能正常用了,拿到手机,从头检查权限,重新安装都不能解决,网络是正常的,怎么就不能访问网络了呢?所有想到的办法都用了而不能解决,最后想起看一下android版本,原来升级到9了!
看Delphi上如何解决这个问题:
第一步:制作配置文件network_security_config.xml,下面是内容:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后在项目文件夹建一个子文件夹res/xml,把network_security_config.xml保存到res/xml下。
第二步:.修改项目的AndroidManifest.template文件
下面是我修改的结果,在applicaiton段增加了networkSecurityConfig一行
<application android:persistent="%persistent%"
android:restoreAnyVersion="%restoreAnyVersion%"
android:label="%label%"
android:debuggable="%debuggable%"
android:largeHeap="%largeHeap%"
android:icon="%icon%"
android:theme="%theme%"
android:hardwareAccelerated="%hardwareAccelerated%"
android:networkSecurityConfig="@xml/network_security_config"
>
在application段,增加一行,引用第一步制作的文件network_security_config.xml
android:networkSecurityConfig="@xml/network_security_config"
注意:一定要写对位置,我就犯了错,因为没写对,浪费几个小时。
第三步:发布network_security_config.xml
通过Project->Deployment菜单,打开发布文件窗口,把 network_security_config.xml加进去,如下图:

注意,发布文件路径,即Remote Path为res\xml\
保存后,重新编译项目,正常情况下,问题就解决了。
如果以前编译过项目,为了要重新生成AndroidManifest.xml文件,你可以Clear项目,也可以手工把生成过的AndroidManifest.xml删除,这个文件在Android\Release文件夹中。手工删除,会减少编译的时间。
这一步也非常重要,我就遇到不重新生成AndroidManifest.xml的问题。
关于原理,下面这篇文章写的非常好,感兴趣可以参考:
https://blog.csdn.net/gengkui9897/article/details/82863966
最后,感谢ChinaCock作者提醒我参考他写的视频播放Demo app,里面就是这样实现的。
如果你不知道ChinaCock是什么?可以看我写过的对ChinaCock组件使用说明的文章,也可以加入他的官方群223717588去进一步了解。如果没项目,没钱,就不用去了,没有免费版本来学习。
后记:高勇针对上面的实现,给了更简单的实现方法,以下为他写的原文:
解决安卓9不让客户端通过非https方式访问服务端数据(不允许发送明文http请求)的问题。
1、选择安卓平台编译一次程序,在项目根目录下会生成如下文件AndroidManifest.template.xml
2、打开此文件,在正确位置加上以下权限即可:android:usesCleartextTraffic="true"
类似如下:
<application android:persistent="%persistent%"
android:restoreAnyVersion="%restoreAnyVersion%"
android:label="%label%"
android:debuggable="%debuggable%"
android:largeHeap="%largeHeap%"
android:icon="%icon%"
android:theme="%theme%"
android:hardwareAccelerated="%hardwareAccelerated%" android:usesCleartextTraffic="true" android:resizeableActivity="false">
直接在AndroidManifest.template.xml中定义使用http访问,确实简单!
下面这篇文章,分析更透,可以进一步参考学习:
解决android 9上无法使用http协议的更多相关文章
- delphi 解决android 9上无法使用http协议
delphi 解决android 9上无法使用http协议 安卓9不让客户端通过非https方式访问服务端数据(不允许发送明文http请求)的问题. 解决方法: 1.选择安卓平台编译一次程序,在项目根 ...
- HTML实现点击时的阴影(:active)(已解决iOS微信上无法使用)
一般是用这个委类:active 参考:http://www.w3school.com.cn/cssref/selector_active.asp 但是业界上实现的效果中,今日头条的手机端网页却不是这样 ...
- 解决android studio上“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65935”问题
我是在更换应用的一个jar包时发生的这个错误,网上查到说是因为同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65935个(DEX 64K problem),进而导致d ...
- (转) Android平台上关于IM的实践总结
前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼 ...
- android-解决 Android N 上 报错:android.os.FileUriExposedException
解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appN ...
- 开发中,android手机WIFI无法使用,无SIM卡故障解决
用eclipse 开发android中,突然出现,android手机WIFI无法使用,无SIM卡故障解决 发现故障后,想办法刷机(没有成功),触点清洁都搞了. 最后恢复出厂设置居然解决了,留资料给同行 ...
- android 解决小米手机上选择照片路径为null情况
昨天测试帅哥说他手机选择图库崩溃了,这是一个上传头像的功能,相信很多应用都有这个功能,于是我就把手机拿过来打log看了下返回的路径 为null,在网上搜索了下解决方案,现在把解决方案记录下: 这是在o ...
- 理解WebKit和Chromium: 调试Android系统上的Chromium
转载请注明原文地址:http://blog.csdn.net/milado_nju 1. Android上的调试技术 在Android系统上,开发人员能够使用两种不同的语言来开发应用程序,一种是Jav ...
- Android github上的好的开源项目汇总
转自:http://blog.csdn.net/ithomer/article/details/8882236 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上.基于 ...
随机推荐
- highChart 缺值-曲线断开问题
time =item.datetime; aqi = Number(item.aqi); pm2_5 = Number(item.pm25); pm10 = Number(item.pm10); co ...
- BDD数据集(mask_rcnn)1
mask_rcnn中ballon的例子 classsification VS semantic segmention VS object detection VS instance segmentio ...
- docker基本部署
一.基本概念docker 1.镜像(Image) Docker 镜像就是一个只读的模板. 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用 ...
- 使用solr进行配置文件
我现在使用的是一个已经搭建好的solr环境下进行的测试: 第一步,需要配置solrhome中的一个配置文件schema.xml 配置内容如下,上面配置的是IK分词器,下面是配置完成的域. 因为我在这个 ...
- tp未验证内容-9
在tp的数据库配置中, convention.php中所有的选项都没有设置,要自己在Home/conf/config.php中自己设置, 注意几个地方,一是数据库的名字是: db_name,不是db_ ...
- Latex: 参考文献双栏对齐
参考: How to level columns in bibliography? Latex: 参考文献双栏对齐 需要实现的效果: 方法1: 在开头引用balance: \usepackage{ba ...
- Ngnix配置
server { listen 80; server_name www.local.test; root /data/workspace; index index.php index.html in ...
- WebApi请求原理
一.路由: 1.首先执行Application_start 2 .注册路由 WebApiConfig,把路由规则写入一个容器 运行 请求会去容器匹配-找到控制器容器 一般不指定Action, rest ...
- Hadoop EC 踩坑 :data block 缺失导致的 HDFS 传输速率下降
环境:hadoop-3.0.2 + 11 机集群 + RS-6-3-1024K 的EC策略 状况:某天,往 HDFS 上日常 put 业务数据时,发现传输速率严重下降 分析: 检查集群发现,在之前的传 ...
- Spring.Net —IOC详解
一. Spring.net中IOC介绍 1. 什么是IOC,控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中 ...