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

这篇具有很好参考价值的文章主要介绍了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方式点这里)文章来源地址https://www.toymoban.com/news/detail-833891.html

  • 第一种:通过adb命令修改
	adb shell
    su
    chmod -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() {
                @Override
                public 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.*** = true
        chmod 0775 /storage/emulated/0/Android/data/packageName/
        chmod 0775 /storage/emulated/0/Android/data/packageName/cache
        chmod 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方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 5.0 ~ 14访问Android/data(obb)目录的方法

    众所周知,安卓每次出新版本的时候都会收紧权限,存储权限也不例外。虽说官方的意思是为了保护隐私安全,但这些改动着实令开发者和用户感到头疼,尤其是Android/data、Android/obb目录的访问。毕竟用户更难操作,开发者也要费力适配。那么今天就来探索下怎么适配这些变

    2024年03月24日
    浏览(33)
  • Android 11编译第三弹 ADB开启ROOT权限

    问题:Relese版本,默认adb访问会降级到shell权限,一些敏感操作不能进行,远程调试比较麻烦。且Release版本没有su模块,不能切换Root用户。 开启adb调试以后,默认进入adb是system权限,不能切换到root(因为Release没有集成su). 有两种方式切换Root: 1) Release也集成su模块 2)默认

    2024年02月09日
    浏览(37)
  • Android11 Wifi Mac地址设置随机或者固定分析

    本文对Android11 wifi MAC地址设置是否随机问题进行分析。 Android 8.0 开始,设备开始支持Wifi 随机MAC,说是为了安全。 很多手上也能看到Wifi 默认使用的是随机MAC地址。 但是有些情况下,需要固定MAC,比如有些OTA升级用的是Wifi MAC地址,这时候就要MAC固定。 所以有必要对设备 W

    2023年04月16日
    浏览(37)
  • Android data recovery特殊场景处理方式介绍

    本文讲述针对特殊场景,终端可以关闭AOSP data recovery功能,避免测试异常。 例如中国电信VPDN测试只能访问内网,而网络检测机制会导致Ping默认配置的URL失败,触发data recovery。 可以有以下处理方式。 关闭Google Internet prob 针对特殊场景的测试用例,终端可以关闭Google Internet

    2023年04月14日
    浏览(24)
  • 升级到Android12后Termux不能访问Android/data目录该怎么办

    最近手机从HarmonyOS 2.0 升级到HarmonyOS 3.0后,发现Termux不能访问Android/data目录,导致以前写的工具都不能用了。 读取不到Android/data目录 后来发现原来从Android11开始访问Android/data目录需要用户给APP应用授权,但Termux用命令行去访问Android/data目录,只显示 \\\".\\\": Permission denied (os err

    2024年02月11日
    浏览(28)
  • Android11编译第六弹:user版本增加su+内置root用户

    问题1:user版本默认不开放root,adb登录后默认采用system用户,收紧用户权限; 问题2:因为有些功能需要用到root用户,例如设置网卡地址,网卡开启和关闭等,因为线上设备user版本没有root用户开放,很不方便。采用允许登录root用户的方式,登录时增加密码验证。 问题3:默

    2024年01月23日
    浏览(31)
  • 【Windows 11】系统安装修改版 Subsystem for Android 安卓子系统,并用 Magisk Root

    目录 步骤 1. 卸载已安装的Window Subsystem for Android 官方版本 2. 启用\\\"Hyper-V\\\" 和 \\\"虚拟机平台\\\"  3. 查看 CPU 处理器是架构 4. 下载修改版Windows Subsystem Android安卓子系统 5. 解压 WSA .zip 包解压缩,并看到有 “AppxManifest.xml” 的文件路径并复制 6. 安装 WSA 安卓子系统 7. 打 开WSA安卓子系

    2024年02月06日
    浏览(41)
  • android 手机获取root权限(刷入magisk面具方式)_获取刷入模块_MIUI_android7/android12实践

    Magisk安装教程 - Magisk中文网 (magiskcn.com) android12: How to Root Xiaomi Redmi Note 11T Pro / 11T Pro+ using Magisk without TWRP (getdroidtips.com) 视频教程 ★ bigstar ★ 玩机必看!带你入坑安卓刷机,小白也能看懂的ROOT基础指南来啦!_哔哩哔哩_bilibili 将前面列出的参考都看一遍 最好把文章结尾的基

    2024年02月06日
    浏览(77)
  • android11 申请所有文件访问权限

    Android 11 引入了强制执行分区存储的限制,导致应用默认不能访问外部文件。 针对以前涉及较多文件的操作,可采用申请所有文件访问权限的方式来解决这一问题,实现方式如下。 (虽然这样做安全性低,官方并不推荐这样,但确实最快适配原有应用程序的方式) 1. Android

    2024年02月04日
    浏览(28)
  • android 11后文件读写访问权限申请

    android 11后对文件读写访问权限管理 与 android 10又有了新的要求,导致在读写或者访问时出现error:java.io.FileNotFoundException: /storage/emulated/0/file_path open failed: EACCES (Permission denied),以下为android 11文件管理权限申请办法 回忆android 10 文件访问权限申请 step 1: AndroidManifest中添加权限申

    2024年02月05日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包