当前位置: 首页> 教育> 培训 > 安卓12aosp mtp屏蔽内部存储显示,只展示特定文件夹和文件类型

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

时间:2025/7/12 10:11:17来源:https://blog.csdn.net/weixin_43387612/article/details/139064710 浏览次数:0次

系统:安卓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;
关键字:安卓12aosp mtp屏蔽内部存储显示,只展示特定文件夹和文件类型

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: