Android9.0以后不允许HTTP访问的解决方案
背景
自 Android 9.0 起,默认禁止使用 HTTP 进行访问。当尝试使用 HTTP 链接时,将会收到以下错误信息:
"Cleartext HTTP traffic to " + host + " not permitted"
为了解决这一问题,下面介绍两种破解方法:
XML布局设置
在 Android 9.0 及以上版本,需要通过以下配置允许 HTTP 访问。在 android/app/res 目录下新建 network_security_config.xml 文件,内容如下:
<network-security-config><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" /></trust-anchors></base-config>
</network-security-config>
然后在 android/app 目录下的 AndroidManifest.xml 文件中的 application 标签内声明文件:
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
其实只需在 AndroidManifest.xml 文件中的 application 标签内声明 android:usesCleartextTraffic="true" 就可以了。如果还有特殊的配置,则需要配置 networkSecurityConfig 文件。另外需要说明的是,networkSecurityConfig 文件中的 cleartextTrafficPermitted 属性会优先于 application 标签内的 usesCleartextTraffic,这意味着,即使在 application 标签中设置了 android:usesCleartextTraffic="false",但在 networkSecurityConfig 文件中设置了 cleartextTrafficPermitted="true",仍然会开启明文传输。
代码设置
为了验证结果,首先需要在 AndroidManifest.xml 文件中的 application 标签内声明文件:
android:usesCleartextTraffic="false"
接下来编写反射工具类,用于调用对象的指定方法:
import android.util.Log;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;/*** 反射工具类,用于调用对象的指定方法*/
public class ReflectionUtil {private static final String TAG = "ReflectionUtil"; // 日志标签/*** 调用对象的指定方法* * @param owner 方法所属的对象实例* @param methodName 方法名* @param b 方法参数,boolean类型* @return 方法的返回值,如果调用失败则返回null*/public static Object invokeMethod(Object owner, String methodName, boolean b) {if (owner == null) {Log.e(TAG, methodName + " not invoked, owner is null"); // 记录错误日志:对象为空无法调用方法return null;}try {Class<?> ownerClass = owner.getClass(); // 获取对象的类Method method = ownerClass.getDeclaredMethod(methodName, boolean.class); // 获取指定方法method.setAccessible(true); // 设置方法为可访问return method.invoke(owner, b); // 调用方法} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {Log.e(TAG, methodName +" not invoked, InvocationTargetException or NoSuchFieldException or IllegalAccessException: " +e.getMessage()); // 记录错误日志:方法调用失败}return null;}
}
最后,通过以下代码设置:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {boolean permittedOld = NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(); // 获取旧的 cleartext 流量是否允许Log.i("TAG", "onCreate, permittedOld: " + permittedOld); // 记录旧的 cleartext 流量是否允许的日志// 动态设置 setCleartextTrafficPermitted 方法ReflectionUtil.invokeMethod(NetworkSecurityPolicy.getInstance(), "setCleartextTrafficPermitted", true);boolean permittedNew = NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(); // 获取新的 cleartext 流量是否允许Log.i("TAG", "onCreate, permittedNew: " + permittedNew); // 记录新的 cleartext 流量是否允许的日志
}
简而言之,通过 XML 布局和反射设置,可以绕过 Android 9.0 的 HTTP 访问限制。
相关文章:
Android9.0以后不允许HTTP访问的解决方案
背景 自 Android 9.0 起,默认禁止使用 HTTP 进行访问。当尝试使用 HTTP 链接时,将会收到以下错误信息: "Cleartext HTTP traffic to " host " not permitted"为了解决这一问题,下面介绍两种破解方法&…...
nvm安装以后,node -v npm 等命令提示不是内部或外部命令
因为有vue2和vue3项目多种,所以为了适应各类版本node,使用nvm管理多种node版本,但是当我按教程安装nvm以后,nvm安装以后,node -v npm 等命令提示不是内部或外部命令 首先nvm官网网址:https://github.com/coreybutler/…...
SBA架构5G核心网
SBA(Service Based Architecture)架构是一种面向服务的架构,旨在提供更灵活、更可扩展、更容易部署和管理的解决方案。在电信领域,SBA架构被广泛应用于5G核心网和下一代网络的设计中。 在卫星互联网核心网的总体技术要求中&#…...
上位机图像处理和嵌入式模块部署(qmacvisual图像拼接)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 qmacvisual本身提供了图像拼接的功能。功能本身比较有意思的。大家如果拍过毕业照,特别是那种几百人、上千人的合照,应该就…...
关于对postcss安装和使用比较详细
PostCSS是一款强大的CSS工具,它可以自动解析CSS代码,应用一系列的插件,然后输出转换后的CSS。PostCSS本身是一个功能相对简单的工具,但它的强大之处在于其插件生态系统,这些插件提供了各种各样的功能,如自动…...
uniApp使用XR-Frame创建3D场景(4)金属度和粗糙度
上一篇讲解了如何在uniApp中创建xr-frame子组件并创建简单的3D场景。 这一篇我们讲解xr-frame中关于mesh网格材质的金属度和粗糙度的设置。 1.先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"> <xr-node visible"{…...
使用itext-core生成PDF
1、添加引用依赖包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.3</version><type>pom</type></dependency> 2、上代码 package com.student.demo.pdf;impor…...
接口自动化框架搭建(四):pytest的使用
1,使用说明 网上资料比较多,我这边就简单写下 1,目录结构 2,test_1.py创建两条测试用例 def test_1():print(test1)def test_2():print(test2)3,在pycharm中执行 4,执行结果: 2࿰…...
蓝桥杯算法基础(34)深度优先搜索DFS(数独游戏)(部分和)(水洼数目)(八皇后问题)(素数环)(困难的串)
深度优先搜索DFS Depth First Searchdfs:先把一条路走到黑 纵横bfs:所有路口看一遍 图 必须借助队列的数据结构无死角搜索数独游戏 你一定听说过数独游戏 如下图所示,玩家需要根据9*9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行…...
蓝桥杯备考随手记: Math 类中常用方法
Java的Math类是一个包含数学操作方法的实用工具类。它提供了许多用于执行各种数学计算的静态方法。 下面是Math类中一些常用的方法: abs():返回参数的绝对值。 int absoluteValue Math.abs(-10); System.out.println(absoluteValue); // Output: 10 c…...
外包干了4年,技术退步明显。。。。
说一下自己的情况,本科生,19年通过校招进入上海某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…...
亚远景科技-Hardware Engineering SPICE课程大纲
Hardware SPICE是intacs为电子硬件开发创建的PRM/PAM过程参考和评估模型,其符合ISO/IEC15504-2, Automotive SPICE 4.0, ISO 26262-1和5: 2018等标准。 无论您是想要深入了解硬件工程领域,还是希望成长为Provisional初级、Competent主任和Principal首席硬…...
JDK8的下载安装与环境变量配置教程
前言 官网下载:Java Archive Downloads - Java SE 8u211 and later 现在应该没人用32位的系统了吧,直接下载Windows x64 Installer jdk-8u391-windows-x64.exe 一、安装JDK 1. 打开jdk-8u391-windows-x64.exe 2. 直接下一步 3. 这个地方不要动他&…...
深入探讨分布式ID生成方案
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…...
花钱的艺术:消费和投资如何分配
消费是钱花出去就回不来了。 消费分为可选消费和必需消费。 必需消费是必须花的钱,用一句老话,财米油盐酱醋茶,维持生活必需的支出。 可选消费,用来提升生活水平的支出,可花可不花,比如苹果手机…...
git 代码库查看方法
在Git中,你可以使用多种命令来查看代码库(repository)的内容。以下是一些常用的命令: 查看所有分支: git branch这个命令会列出本地仓库中的所有分支。当前活动的分支前面会有一个星号(*)。 查…...
MySql的下载与安装
window系统: 下载MySQL 8.0 访问MySQL官方网站: 打开浏览器,输入网址 https://dev.mysql.com/downloads/mysql/ 进入MySQL下载页面。 选择版本: 在网页中找到“MySQL Community Server”部分,这通常是最新的社区版&am…...
python学习17:python中的while循环
python中的while循环 1.循环的作用就是:重复运行某些代码 2.while循环: 1.while的条件必须是布尔类型的 True表示继续循环,False表示结束循环 2.必须设置循环结束条件,否则将会无限循环 ,如下的count<10 如果coun…...
Android中的导航navigation的使用
Android中的导航(Navigation)是一种应用程序设计模式,它通过使用统一的用户界面来管理应用程序中的各种界面和交互。在Android中,导航主要通过使用Navigation SDK来实现,该SDK提供了一组工具和组件,可以帮助…...
Clip算法解读
论文地址:https://arxiv.org/pdf/2103.00020.pdf 代码地址:https://github.com/OpenAI/CLIPz 中文clip代码:https://gitcode.com/OFA-Sys/Chinese-CLIP/overview 一、动机 主要解决的问题: 超大规模的文本集合训练出的 NLP 模…...
LLM训练实战:8个编程谜题带你掌握分布式训练核心技术
1. 项目概述与核心价值如果你对大型语言模型(LLM)的训练过程感到好奇,或者你听说过“千卡集群”、“万亿参数”这些词,但总觉得它们离自己很遥远,那么这个名为“LLM Training Puzzles”的项目,就是为你量身…...
Radon实战指南:在CI/CD中集成Python代码质量检查的完整教程
Radon实战指南:在CI/CD中集成Python代码质量检查的完整教程 【免费下载链接】radon Various code metrics for Python code 项目地址: https://gitcode.com/gh_mirrors/rad/radon Radon是一个强大的Python代码质量分析工具,能够帮助开发者自动检测…...
嵌入式系统如何应对VR/AR的技术挑战:从硬件选型到系统优化
1. 虚拟现实与嵌入式系统的交汇点2016年,如果你在嵌入式系统开发圈子里,听到最多的词除了“物联网”,大概就是“虚拟现实”了。那一年,Oculus Rift消费者版正式发货,HTC Vive也刚刚上市,一股VR热潮席卷了科…...
为什么你的Perplexity Science搜索总错过最新预印本?——基于arXiv/medRxiv/SSRN实时源的3层校验机制(含Python自动化脚本)
更多请点击: https://intelliparadigm.com 第一章:为什么你的Perplexity Science搜索总错过最新预印本?——基于arXiv/medRxiv/SSRN实时源的3层校验机制(含Python自动化脚本) Perplexity Science 依赖第三方索引快照…...
不止于仿真:用Multisim14.0的BUCK电路案例,手把手教你理解CCM/DCM模式与电感计算
从波形到公式:用Multisim 14.0解锁BUCK电路CCM/DCM模式的本质理解 当我们第一次翻开电力电子教材,那些关于BUCK电路工作模式的描述往往显得抽象而晦涩。"连续导通模式(CCM)"、"断续导通模式(DCM)"、"临界电感值"——这些概…...
ARM PMCCNTR寄存器:性能监控与时钟周期计数详解
1. ARM PMCCNTR寄存器深度解析在现代处理器架构中,性能监控单元(PMU)是系统调优和性能分析的关键组件。作为ARM架构性能监控的核心,PMCCNTR寄存器提供了精确的处理器时钟周期计数能力。这个64位寄存器在AArch32和AArch64执行模式下具有架构映射关系&…...
spawnfile:轻量级进程编排工具,提升本地开发与测试效率
1. 项目概述:一个被低估的进程管理利器如果你在Linux或macOS环境下做过开发,尤其是需要频繁启动、停止、监控一堆后台服务(比如微服务架构下的多个组件),那你一定对进程管理工具不陌生。从最基础的nohup加&&#x…...
3分钟极速攻略:ctfileGet如何一键破解城通网盘下载限速
3分钟极速攻略:ctfileGet如何一键破解城通网盘下载限速 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾因城通网盘的低速下载而焦虑?面对大文件的漫长等待和频繁验证码&…...
如何用开源工具永久保存你的微信聊天记忆?完整指南揭秘数据备份终极方案
如何用开源工具永久保存你的微信聊天记忆?完整指南揭秘数据备份终极方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_…...
从DataOperation接口到QuickSort实现:探究适配器模式在算法整合中的应用
1. 适配器模式:解决接口不兼容的桥梁 想象一下你从国外带回来一个三脚插头的电器,但家里的插座都是两孔的。这时候你会怎么做?大多数人会选择买一个转换插头。在编程世界里,适配器模式就是这个万能的"转换插头"。 最近我…...
