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

系统:安卓12

屏蔽sd卡/内存存储显示

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

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

java 复制代码
    private void addStorage(StorageVolume volume) {
        Log.v(TAG, "Adding MTP storage:" + volume.getPath());
        //LIN
        if(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 session
            mPerfBoost.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里面的视频、图片内容,并且过滤文件类型

java 复制代码
class MtpPropertyGroup {
    private static final String TAG = MtpPropertyGroup.class.getSimpleName();

    //add by lj start  LIN
    private 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 end

    private class Property {
        int code;
        int type;
        int column;

        Property(int code, int type, int column) {
            this.code = code;
            this.type = type;
            this.column = column;
        }
    }
java 复制代码
    switch (property.code) {
        case MtpConstants.PROPERTY_PROTECTION_STATUS:
            // protection status is always 0
            list.append(id, property.code, property.type, 0);
            break;
        case MtpConstants.PROPERTY_NAME:
        case MtpConstants.PROPERTY_OBJECT_FILE_NAME:
            //add by lj start LIN
            if (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 end
        case MtpConstants.PROPERTY_DISPLAY_NAME:
            list.append(id, property.code, object.getName());
            break;
相关推荐
skywalk81634 分钟前
在考虑双轨制,即在中文语法的基础上,加上数学公式的支持,这样像很多计算将更加简单方便,就像现在的小学数学课本里面一样,比如:定x=2*x + 1
开发语言
小书房8 分钟前
Kotlin的by
android·开发语言·kotlin·委托·by
就叫飞六吧24 分钟前
QT写一个桌面程序exe并动态打包基本流程(c++)
开发语言·c++
threelab33 分钟前
Three.js 代码云效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能
jinanwuhuaguo36 分钟前
(第二十八篇)OpenClaw成本与感知的奇点——从“Token封建制”到“全民养虾”的本体论地基
android·人工智能·kotlin·拓扑学·openclaw
V搜xhliang024642 分钟前
OpenClaw科研全场景用法:从文献到实验室的完整自动化方案
运维·开发语言·人工智能·python·算法·microsoft·自动化
kaikaile19951 小时前
风、浪、流环境模型的船舶三自由度(纵荡、横荡、艏摇)运动仿真MATLAB
开发语言·人工智能·matlab
fish_xk1 小时前
map和set
java·开发语言
李崧正1 小时前
Java技术分享:Lambda表达式与函数式编程
java·开发语言·python
老了,不知天命1 小时前
鳶尾花項目JAVA
java·开发语言·机器学习