安卓12aosp mtp屏蔽内部存储显示,只展示特定文件夹和文件类型

系统:安卓12

屏蔽sd卡/内存存储显示

packages/services/Mtp/src/com/android/mtp/MtpService.java

修改如下,屏蔽了内部存储,如果需要屏蔽sd卡也可以根据这里做修改:

    private void addStorage(StorageVolume volume) {Log.v(TAG, "Adding MTP storage:" + volume.getPath());//LINif(volume.getPath().contains("/storage/emulated/")) {Log.d(TAG, "不添加 内部路径 "+volume.getPath());return;}synchronized (MtpService.class) {if (sServerHolder != null) {sServerHolder.database.addStorage(volume);}}if (mPerfBoost == null) {mPerfBoost = new BoostFramework(true);}if (mPerfBoost != null && !mIsPerfLockAcquired) {//Use big enough number here to hold the perflock for entire MTP sessionmPerfBoost.perfHint(BoostFramework.VENDOR_HINT_MTP_BOOST, null, Integer.MAX_VALUE, -1);mIsPerfLockAcquired = true;}}

只展示特定文件夹和文件类型

参考链接:Android 11 mtp文件夹自定义显示,且不可写,不可删除_java android 如何让文件夹不被删除-CSDN博客

frameworks/base/media/java/android/mtp/MtpPropertyGroup.java

修改只展示某个app里面的视频、图片内容,并且过滤文件类型

class MtpPropertyGroup {private static final String TAG = MtpPropertyGroup.class.getSimpleName();//add by lj start  LINprivate static String DIRECTORY_RECORD = "Android";private static String DIRECTORY_RECORD1 = "data";private static String DIRECTORY_RECORD2 = "com.example.xxx";private static String DIRECTORY_RECORD3 = "files";private static String DIRECTORY_RECORD4 = "video";private static String DIRECTORY_RECORD5 = "picture";private static String DIRECTORY_RECORD6 = "audio";//add by lj endprivate class Property {int code;int type;int column;Property(int code, int type, int column) {this.code = code;this.type = type;this.column = column;}}
    switch (property.code) {case MtpConstants.PROPERTY_PROTECTION_STATUS:// protection status is always 0list.append(id, property.code, property.type, 0);break;case MtpConstants.PROPERTY_NAME:case MtpConstants.PROPERTY_OBJECT_FILE_NAME://add by lj start LINif (object.getParent().isRoot() && !DIRECTORY_RECORD.equals(object.getName())) {responseId = MtpConstants.RESPONSE_INVALID_OBJECT_HANDLE;break;} else if (!object.getParent().isRoot() &&!(DIRECTORY_RECORD1.equals(object.getName())|| DIRECTORY_RECORD2.equals(object.getName())|| DIRECTORY_RECORD3.equals(object.getName())|| DIRECTORY_RECORD4.equals(object.getName())|| DIRECTORY_RECORD5.equals(object.getName())|| DIRECTORY_RECORD6.equals(object.getName())|| object.getName().contains("mp4")|| object.getName().contains("jpg")|| object.getName().contains("mp3")|| object.getName().contains("wav")|| object.getName().contains("aac"))){responseId = MtpConstants.RESPONSE_INVALID_OBJECT_HANDLE;break;}//add by lj endcase MtpConstants.PROPERTY_DISPLAY_NAME:list.append(id, property.code, object.getName());break;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[GStreamer] gst_element_link 及 pad 在继承体系中如何存在

前言: pad 是每个 element实例 都有的,是 elemenet 之间沟通的代理人,没有 pad 的 element 没法于其他element交流。 考虑到gstreamer存在继承体系,那么如果继承类element不在init函数里创建pad,那么在gst_element_l…

51打开工程,发现cannot read project file问题

解决办法: 1、路径太长,可以在桌面重新创建一个文件夹,把所有的文件都移动到新的文件夹中 2、创建工程的时候,都勾选上,就没问题

OracleDG原理

一、DataGuard架构介绍 1、基本介绍 在DG环境中,至少会有两个数据库,一个数据库处于Open状态,对外提供服务,这个数据库叫做primary Database。第二个数据库处于恢复状态,叫做Standby Database。运行时Primay Databas…

vue从入门到精通(四):MVVM模型

一,MVVM MVVM(Model–view–viewmodel)是一种软件架构模式。MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来。详见MVVM 二,Vue中的MVVM Vue虽然没有完全遵循 MVVM 模型,但是 Vue 的设…

手机相册怎么恢复?如何挽救误删的照片?

手机相册成为我们存储和分享照片的主要途径,这些照片可能代表着我们的美好回忆、重要时刻或珍贵的瞬间。然而,有时候我们会因为误操作或一时冲动,将一些珍贵的照片误删,并且很难找回来。手机相册怎么恢复呢?本文将为你…

基于Tensorflow+Keras的卷积神经网络(CNN)人脸识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别是计算机视觉领域的一个重要研究方向,广泛应用于安全监控、身份验证、人机…

Android 性能为王时代SparseArray和HashMap一争高下

文章目录 一、SparseArray 源码分析1. **类定义和构造函数**2. **基本方法**2.1 put(int key, E value)2.2 get(int key)2.3 delete(int key)2.4 removeAt(int index)2.5 gc()2.6 size()2.7 keyAt(int index) 和 valueAt(int index) 3. **辅助方法**3.1 binarySearch() 二、使用…

最新AI智能问答创作系统ChatGPT网站源码V4.20版本,GPTs、AI绘画、AI换脸、垫图混图+(GoMaxAI系统搭建部署教程文档)

Midjourney(人工智能图像生成器),仅用了一年时间就已经火爆全球。它就像是一个想象力的助力器,总能带给人们一些不可思议的奇妙的作品。Midjourney虽然是一款最强的AI绘画工具,但对于很多人来说Midjourney怎么用&#…

使用JavaScript日历小部件和DHTMLX Gantt的应用场景(三)

DHTMLX Suite UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用…

匝间冲击耐压试验仪产品介绍及工作原理

产品简介 武汉凯迪正大KD2684S匝间冲击耐压试验仪适用于电机、变压器、电器线圈等这些由漆包线绕制的产品。因漆包线的绝缘涂敷层本身存在着质量问题,以及在绕线、嵌线、刮线、接头端部整形、绝缘浸漆、装配等工序工艺中不慎而引起绝缘层的损伤等,都会造…

在线投票系统源码 网上投票平台创建 安全稳定 支持自定义投票规则+礼物道具功能

分享一款在线投票系统源码,是一款功能丰富、安全稳定的网络投票平台解决方案。通过本源码,用户可以轻松创建并管理各种在线投票活动,支持自定义投票规则,同时集成礼物道具功能,增强用户参与度和投票活动的趣味性&#…

2024 年 电工杯(B题)大学生数学建模挑战赛 | 平衡膳食食谱 | 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 CS团队倾注了大量时间和心血,深入挖掘解决方案。通…

常用的框架——— Android UtilCode

AndroidUtilCode是一个功能强大且易于使用的Android库。该库封装了Android开发中经常使用的具备完整演示和单元测试的功能。经过使用其封装的API,能够大大提升开发效率。该程序主要由两个模块组成,utilcode(一般在开发中使用)和su…

【真人Q版手办风】线稿手绘+ AI绘图 Stable Diffusion 完整制作过程分享

大家好,我是设计师阿威。 今天给大家分享一篇【真人Q版卡通手办】风格的制作过程,话不多说,进入正题。 成品预览 手绘线稿 首先,我使用的是老款手绘软件【SAI】,用[钢笔工具]进行了人物的线稿Q版描绘。&#x1f447…

ArcEngine/ArcObject转换影像解决偏色的问题IRasterLayer

IRasterLayer里面的Renderer使用RasterRGBRendererClass,StretchType设置为NONE。以下是我将图像转换为img格式,采用RLE无损压缩。 IRasterLayer rasterLayer new RasterLayerClass(); rasterLayer.CreateFromFilePath(strFromName); IRaster pRaster …

巨控无线通讯模块在煤化工皮带保护系统中的应用

一、项目介绍 近年来由于煤矿化工行业在实际生产过程中事故频发,国家安监部门自2022年起开展了为其三年的专项整治行动,皮带运输系统作为煤矿化工行业自动化系统的重要组成部分成为此次专项整治重点。 兖矿新疆能化有限公司作为山能集团在新疆分部的龙…

AWS计算之Lambda

AWS Lambda是亚马逊提供的一项无服务器(Serveless)计算服务,它允许开发人员在无需管理服务器的情况下运行代码。Lambda可以自动扩展以处理任何规模的请求,并且只会收取实际执行代码的费用,而不会收取任何预定或固定费用。Lambda 函数在托管的…

如何为海量计数场景设计缓存体系?no.34

计数常规方案 计数服务在互联网系统中非常常见,用户的关注粉丝数、帖子数、评论数等都需要进行计数存储。计数的存储格式也很简单,key 一般是用户 uid 或者帖子 id 加上后缀,value 一般是 8 字节的 long 型整数。 最常见的计数方案是采用缓存…

常见的100个Shell命令,超级实用!

在大多数的Linux和Unix系统、及其他类Unix系统中,Shell是用户与操作系统内核交互的主要方式。作为一种强大的命令行解释器,它也支持编程功能,用户可以写脚本来处理各种任务。 熟悉shell脚本,首先要对shell指令熟悉,今…

Vue3学习-用 vite@latest 初始化项目后,遇到无法识别 .vue 文件

引入app界面遇到 我的解决方案 1.根目录创建 env.d.ts&#xff0c;添加 declare module "*.vue" {import type { DefineComponent } from "vue"const vueComponent: DefineComponent<{}, {}, any>export default vueComponent }2.在 tsconfig.json…