当前位置: 首页 > news >正文

Android 11 访问 Android/data/或者getExternalCacheDir() root方式

前言
需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。
getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/

获取访问权限
如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码

   android:requestLegacyExternalStorage="true"

以此禁用分区存储,但这在Android11及以上版本不起作用。

root方式 (非root方式点这里)

  • 第一种:通过adb命令修改
	adb shellsuchmod -R 775 /storage/emulated/0/Android/data/packageName/
  • 第二种:系统服务代码
	frameworks/base/services/core/java/com/android/service/***/***.java
	//系统服务合适的地方添加安装卸载应用监听private void registerForBroadcasts() {IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);intentFilter.addDataScheme("package");mContext.registerReceiver(new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (Intent.ACTION_PACKAGE_ADDED.equals(action)||Intent.ACTION_PACKAGE_REPLACED.equals(action) ) {Uri data = intent.getData();String pkgName = data.getEncodedSchemeSpecificPart();//添加安装替换应用监听if("com.***.***".equals(pkgName)){//更新系统属性SystemProperties.set("persist.sys.***", "true");}} else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {if (!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {Uri data = intent.getData();String ssp;if (data != null && (ssp = data.getSchemeSpecificPart()) != null) {String unPkgName = data.getEncodedSchemeSpecificPart();//添加移除卸载应用监听if("com.***.***".equals(unPkgName)){//更新系统属性SystemProperties.set("persist.sys.***", "false");}}}}}}, intentFilter);}
  	system/core/rootdir/init.rc
    #init.rc添加属性监听chmod改变权限on property:persist.sys.*** = truechmod 0775 /storage/emulated/0/Android/data/packageName/chmod 0775 /storage/emulated/0/Android/data/packageName/cachechmod 0775 /storage/emulated/0/Android/data/packageName/cache/*.apk
  • 第三种:系统服务代码
        //在系统安装应用接口中添加if(!TextUtils.isEmpty(filePath)){if(filePath.startsWith("/storage/emulated/0/Android/data/com.***.***/")){try {String command = "chmod -R 775 /storage/emulated/0/Android/data/com..***.***/";Process process = Runtime.getRuntime().exec(command);process.waitFor();} catch (Exception e) {e.printStackTrace();}}}

相关文章:

Android 11 访问 Android/data/或者getExternalCacheDir() root方式

前言: 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExt…...

Linux探秘之旅:透彻理解路径、命令与系统概念

目录 如何远程连接 远程登录简明指南 linux区别 1.严格区分大小写 2.linux的命令返回结果判断 3.如何查看网络信息 4.关于后缀名(Linux不关心文件后缀) 4.1 需要记忆的后缀 5.echo命令 6.linux一切皆文件 6.1比如磁盘的文件 6.2可执行文件 …...

哈希算法 c语言

#include <stdio.h> #include <stdlib.h> #include <string.h> // 哈希函数 unsigned int hash_function(const char *str) { unsigned int hash 0; while (*str) { hash (hash * 31 *str) % 1000; str; } return hash;…...

新版MQL语言程序设计:组合模式的原理、应用及代码实现

文章目录 一、什么组合模式二、为什么需要组合模式三、组合模式的实现原理四、组合模式的应用场景五、组合模式的代码实现 一、什么组合模式 组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和…...

代码随想录算法训练营第25天 | 216.组合总和III ,17.电话号码的字母组合

回溯章节理论基础&#xff1a; https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 216.组合总和III 题目链接&#xff1a;https://leetcode.cn/problems/combination-sum-iii/ 思路: 本题就是在[1,2,3,4,5,6,7,…...

Rust 第一个rust程序Hello Rust️

文章目录 前言一、vscode 安装rust相关插件二、Cargo New三、vscode调试rustLLDB 前言 Rust学习系列。今天就让我们掌握第一个rust程序。Hello Rust &#x1f980;️。 在上一篇文章我们在macOS成功安装了rust。 一、vscode 安装rust相关插件 以下是一些常用的 Rust 开发插件…...

高斯消去法 | LU分解 | PA=LU分解(MatLab)

一、问题描述 利用高斯消去法&#xff0c;LU 分解及PALU 分解求解非线性方程组。 二、实验目的 掌握高斯消去法、LU 分解、PALU 分解的算法原理&#xff1b;编写代码实现利用高斯消去法、LU 分解、PALU 分解来求解线性方程组。 三、实验内容及要求 1. 利用顺序高斯消去法求…...

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号 code review! 文章目录 Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号1.expect2.bash 1.expect 在Expect脚本中&#xff0c;你可以使用expect来监听程序输出&#xff0c;…...

项目02《游戏-12-开发》Unity3D

基于 项目02《游戏-11-开发》Unity3D &#xff0c; 任务&#xff1a;实现场景怪物自动巡航 &#xff0c; 首先在场景中创建小球命名为路径点WayPoint0&#xff0c; 取消小球的碰撞器Collider&#xff0c; 再复制两个改名为WayPoint1 和 WayPoint2 &#xff0c; 在…...

记一次面试题

1.Php 私有化包&#xff08;composer&#xff09;的部署 1. 创建你的PHP包 确定你的包的功能和命名空间。 创建一个新的目录并初始化一个Git仓库。 使用composer init命令创建一个composer.json文件&#xff0c;并定义你的包名、版本、依赖等信息。 2. 开发并测试你的包 在本地…...

Rust入门2——随机数

文章目录 一、生成随机数二、比较两个数相等 简单列出两个Rust的小例子 一、生成随机数 在Cargo.toml的dependencies中引入rand&#xff0c;指定rand的版本 [dependencies] rand "^0.3.14"之后在主函数中调用rand函数&#xff0c;生成随机数 use rand::Rng; f…...

c#: 表达式树的简化

环境&#xff1a; .net 6 一、问题&#xff1f; 有下面的表达式&#xff1a; var nums new List<int> { 1, 2, 3 }; Expression<Func<int, bool>> exp i > i > nums.Max();我们知道&#xff0c;它其实就是&#xff1a;exp i > i > 3; 那么…...

13. UE5 RPG限制Attribute的值的范围以及生成结构体

前面几章&#xff0c;我们实现了通过GameplayEffect对Attribute值的修改&#xff0c;比如血量和蓝量&#xff0c;我们都是有一个最大血量和最大蓝量去限制它的最大值&#xff0c;而且血量和蓝量最小值不会小于零。之前我们是没有实现相关限制的&#xff0c;接下来&#xff0c;我…...

UE4运用C++和框架开发坦克大战教程笔记(十九)(第58~60集)完结

UE4运用C和框架开发坦克大战教程笔记&#xff08;十九&#xff09;&#xff08;第58~60集&#xff09;完结 58. 弹窗显示与隐藏59. UI 面板销毁60. 框架完成与总结 58. 弹窗显示与隐藏 这节课我们先来补全 TransferMask() 里对于 Overlay 布局类型面板的遮罩转移逻辑&#xff…...

ModuleNotFoundError: No module named ‘_ctypes‘报错解决方案

1、须命令安装libbffi-devel软件包&#xff1a; yum install libffi-devel -y2、安装完后再重装python3&#xff0c;无须卸载 找到之前的python3安装包&#xff0c;如果安装包删除了通过 history | grep python命令找到最初安装时的包下载的命令下载&#xff0c;保证版本一样&…...

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…...

spring boot3x登录开发-上(整合jwt)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 jwt简介 导依赖 编写jwt工具类 1.配置项直接嵌入代码&#xff0c;通过类名.静态方法使用 2.配置项写到…...

git 克隆拉取代码出现私钥权限问题。

问题反馈&#xff1a; rootdd:~/android/boost-1.74-for-android-r20b# git clone https://github.com/liulilittle/boost-1.74-for-android-r20b.git Cloning into boost-1.74-for-android-r20b... WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0777 for /root/…...

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-卷积码原理

目录 一、引言 二、卷积编码的发展历史 2.1 卷积码的起源 2.2 主要发展阶段 2.3 重要里程碑 三、卷积编码的基本概念 3.1 基本定义 3.2 编码器框图 3.3 编码多项式 3.4 网格图(Trellis)描述 四、MATLAB示例 一、引言 卷积编码&#xff0c;作为数字通信领域中的一项…...

揭开Markdown的秘籍:标题|文字样式|列表

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Markdown指南、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️Markdown 标题二. ⛳️Markdown 文字样式2.1 &#x1f514;斜体2.2 &…...

Python实时通信实战:Flask-SocketIO深度解析

Python实时通信实战&#xff1a;Flask-SocketIO深度解析 引言 在Python开发中&#xff0c;实时通信是构建现代Web应用的核心技术。作为一名从Rust转向Python的后端开发者&#xff0c;我深刻体会到Flask-SocketIO在实时通信方面的优势。Flask-SocketIO为Flask应用提供了WebSocke…...

GSE魔兽世界宏编辑器:高级序列化技术与智能战斗自动化解决方案

GSE魔兽世界宏编辑器&#xff1a;高级序列化技术与智能战斗自动化解决方案 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Advanced-Macr…...

别再重装系统了!Ubuntu 20.04 下 libsnark 零知识证明环境一次搭建成功的保姆级避坑指南

零知识证明开发实战&#xff1a;Ubuntu 20.04下libsnark环境高效搭建指南 在区块链和密码学领域&#xff0c;零知识证明技术正成为隐私保护的核心解决方案。作为最具代表性的开源库之一&#xff0c;libsnark因其高效的证明系统实现而被众多隐私项目采用。然而&#xff0c;许多开…...

基于Playwright的Instagram自动化技能包:原理、实现与智能体集成

1. 项目概述与核心价值最近在折腾个人智能助理&#xff0c;想让它能帮我处理一些社交媒体上的琐事&#xff0c;比如自动查看Instagram上的新动态、给特定帖子点赞或者保存一些有趣的图片。在网上搜了一圈&#xff0c;发现了一个叫adamanz/instagram-skill的开源项目&#xff0c…...

热销榜单:2026年深圳App开发公司推荐,揪出大众推荐的五大高口碑产品

在2026年、深圳的App开发公司凭借其创新能力逐渐崭露头角。在这个市场中解决方案、从电商到物联网设计美学赢得了用户信任&#xff1b;而本凡码农科技则专注于小程序定制、满足市场对便捷应用的追求。还有、云码科技伴随着创新技术提供了更高等灵活性&#xff0c;而晨曦科技结合…...

IEA-15-240-RWT:15MW海上风机开源模型的完整入门指南

IEA-15-240-RWT&#xff1a;15MW海上风机开源模型的完整入门指南 【免费下载链接】IEA-15-240-RWT 15MW reference wind turbine repository developed in conjunction with IEA Wind 项目地址: https://gitcode.com/gh_mirrors/ie/IEA-15-240-RWT 你是否曾经想要研究海…...

手把手教你用STM32F103驱动DS3231高精度时钟模块(附完整源码与避坑指南)

手把手教你用STM32F103驱动DS3231高精度时钟模块&#xff08;附完整源码与避坑指南&#xff09; 1. 硬件准备与连接 DS3231作为一款高精度实时时钟模块&#xff0c;其内部集成了温度补偿晶体振荡器(TCXO)&#xff0c;在-40C到85C范围内精度可达2ppm。与STM32F103的硬件连接主…...

AMD Ryzen嵌入式处理器在COM Express模块上的高性能应用与设计实践

1. 项目概述&#xff1a;当COM Express遇上AMD Ryzen&#xff0c;一次嵌入式设计的性能跃迁 在嵌入式系统设计领域&#xff0c;COM Express&#xff08;Computer-On-Module Express&#xff09;模块因其标准化、高集成度和易于扩展的特性&#xff0c;一直是构建紧凑型、高性能嵌…...

OpenMC多群截面计算的3个颠覆性优化策略:从理论到工程实践

OpenMC多群截面计算的3个颠覆性优化策略&#xff1a;从理论到工程实践 【免费下载链接】openmc OpenMC Monte Carlo Code 项目地址: https://gitcode.com/gh_mirrors/op/openmc 核反应堆物理计算中&#xff0c;多群截面精度直接决定了整个模拟系统的可靠性。传统方法在处…...

STM32 HAL库实战:手把手教你用匿名上位机V7显示自定义波形(附完整驱动代码)

STM32 HAL库与匿名上位机V7深度整合&#xff1a;自定义波形显示实战指南 在嵌入式系统开发中&#xff0c;数据可视化是调试和性能分析的关键环节。匿名上位机V7作为一款功能强大的国产调试工具&#xff0c;以其灵活的协议支持和直观的波形显示功能&#xff0c;成为众多工程师的…...