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

砍柴网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

来源:三易生活  

得物 APP 会出现这个问题的原因,其实并不复杂。

在刚刚过去的这个双 11,想必许多朋友都加入了 " 买买买 " 的行列,但有一位得物用户的购物体验却有些糟心。据这位消费者在 社交 平台发布的视频显示,他双 11 期间在得物买了东西,但在发现有问题向平台反映、并上传了视频作为证据后,收到了华为 手机 的系统提示,检测到 " 得物 "APP 删除了相关视频,并已成功拦截。

得物删除视频被系统拦截?都是开发不规范惹的祸 这一视频所描述的事情其实非常简单,那就是得物方面或是在通过删除视频证据的方式,来解决售后问题。而得物这一 " 店大欺客 " 的操作,自然也让许多网友感同身受,因此也一石激起了千层浪。眼见着此事逐渐走向了失控的边缘,得物方面在 11 月 13 日发布声明称,得物没有动力去做删除用户相册内容等不合规行为,也没有批量识别和定向删除用户相册的权限与能力。

随后,得物方面就 " 华为手机提示得物 APP 删除照片 " 一事再次发布说明称,得物从未删除用户手机相册中的原视频,而是为了避免占用用户手机存储空间、删除的是临时缓存文件。得物方面在这一说明中明确,临时缓存文件的清理主要为了不占用手机的存储空间,并且在其从始至终的整个操作流程,用户保存在手机中的原始视频都不会受到任何影响。

除此之外,得物方面在这份说明中也暗示,这一做法是行业通行方案。事实上,在 " 华为手机提示得物删除照片 " 事件前,此前在 2020 年和 2021 年就曾分别发生了 QQ 删除照片被华为 EMUI 拦截,以及 vivo 手机提示拼多多 APP 删除相册照片的案例,已经证明了这确实并非孤例。而且不仅仅是得物,拼多多与腾讯方面早前给出的回应,同样将问题归结于 " 缓存文件 "。

从 Android 应用开发的角度来说,任何一款 APP 只要在 AndroidManifest.xml(Android 应用清单)中声明 ,申请关于本地文件读写的预定义的权限,此后再获得了用户的授权,它就有了向本地文件夹中删除或添加文件的权限。但问题是,随着谷歌方面收紧了 Android 权限机制,APP 试图获得这样的权限是一定需要经过用户允许的。

换而言之,目前 APP 想要进行处理用户存储在手机中的数据这类敏感操作,必然要获得用户的授权。并且事实也确如得物方面所言,是手机系统检测到 APP 对缓存文件的处理、进而触发了拦截通知。然而这并不是整件事的全貌,得物的相关说明实际上是避重就轻地撇清了自己的责任。

" 缓存 " 无疑是提高手机性能的重要手段,由于手机中的主控、内存、存储等不同元器件的运行速度不同,所以为了平衡各元器件的速度差异,Android 系统设计了用于数据交换的缓冲区。而 APP 在运行时产生的视频、文字、图片等数据就会放在缓存里,能够大幅提升数据的响应速度,当用户有需求的时候即可实现 " 秒开 " 的效果。

当然,由于 Android 手机的内存(RAM)是有限的,目前主流 Android 旗舰机型通常也只有 8GB 至 16GB 的内存,所以出于对内存的高效利用,谷歌为 Android 设计了名为 Low Memory Killer 的内存回收机制。其作用,就是当系统发现内存低于警戒线时,可通过对进程重要性的评估,来决定关闭哪些进程释放内存、以确保系统的流畅度。

但除了 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 删除自己的照片、视频而忧心了。

随意打赏

提交建议
微信扫一扫,分享给好友吧。