删除|得物删除视频被系统拦截?都是开发不规范惹的祸( 二 )


但除了Android本身外 , APP也会对自己产生的缓存进行处理 。 比如说 , 得物APP所采用的方案 , 就是用户使用其编辑视频时 , 会将该视频放进缓存 , 待视频上传完毕后再删除相关文件来释放缓存空间 。 那么问题就来了 , 这样的策略既然是业内通行做法 , 那按理来说应该会出现大范围的误报 , 可为什么只有得物出现了被华为HarmonyOS拦截的情况呢?



答案可能只有一个 , 那就是得物方面在APP开发时并没有遵守华为的相关规范 。 从正常的逻辑上来说 , 无论华为还是其他Android厂商 , 它们开发的系统都只会管辖本身所提供的相册目录 , 而不会关注APP对私有文件目录上的操作 。 通俗来说 , 就是手机厂商提供的操作系统只会管理“公共场景” , 而对APP自己的内部行为不会“长臂管辖” 。
而这一点 , 在两年前华为消费者业务手机产品线副总裁李小龙回应“华为手机提示拦截QQ删除照片”时 , 就体现的非常清晰 。 当时他曾表示 , “图片视频删除保护功能 , 只要有第三方应用删除常用图库目录下的照片或视频 , 就会通知提醒用户 , 并能够在图库回收站恢复刚删除的内容 。 如果第三方应用不想让缓存图片被用户在系统图库下看到 , 就应该按照安卓规范在该缓存目录下添加.nomedia属性 , 这样缓存图片就不会被系统扫描到 。 ”



没错 , 按照Android开发规范 , APP产生的临时文件应该被归属在APP文件夹下 。 并且有一个事实需要说明 , 那就是Android系统本身其实是没有所谓的“相册”功能 , 大家看到的“相册”其实是手机厂商利用系统服务MediaProvider(媒体存储器)将存储空间内媒体文件搜集并整理的结果 。
“.nomedia属性”则是告诉MediaProvider , 这个文件夹中不存在媒体文件 , 让系统跳过扫描这个文件夹下的媒体文件 。 当然 , 开发者将APP产生的缓存文件放到系统的缓存目录下 , 并将缓存清理工作完全交由系统来负责也是一种策略 。



所以 , 得物方面就是避开了两个正确选项 , 选择了一个错误的方向 。 其并没有遵循相关开发规范 , 既可能是没有为多媒体缓存文件添加.nomedia属性 , 进而导致相关文件被系统扫描到;也有可能是直接在系统缓存目录下 , 即APP私有目录外、创建了属于自己的缓存文件夹 , 却选择由APP进行删除操作 。 事实上 , 这两种情况都会导致系统提示 , APP尝试删除用户相册内文件的提示 。
因此在华为手机的HarmonyOS看来 , 得物的这番操作显然就相当于是在“破坏公共设施” , 因此需要向用户报告这一行为 。
【删除|得物删除视频被系统拦截?都是开发不规范惹的祸】归根结底 , 之所以总是在Android生态内出现类似事件 , Android的沙盒机制远逊于iOS是关键 。 当每一个APP都只能对自己沙盒内的数据进行增删改、对于沙盒外的数据无权过问时 , 自然用户也就不再需要为APP删除自己的照片、视频而忧心了 。