V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jeesk
V2EX  ›  Android

谷歌自己偷偷用了什么 Api ? 在申请 sdcard 的权限上竟然可以不使用 saf.

  •  
  •   jeesk · 6 小时 3 分钟前 · 1215 次点击
    周末不知道啥情况我偷偷的把我珍藏多年的 android 老手机拿出来玩玩了, 然后手机里面一直是安装的谷歌的文件极客和图片, 我使用 mt 文件管理器, 管理 sdcard 目录的文件, 这个时候 mt 非要叫我去 saf 授权, 授权后才能删除文件.

    后面我使用谷歌文件极客和谷歌的图库, 发现他们根本不需要 saf 授权, 大惊, 后续陆续使用了几个第三方开发者开发者的文件管理器和图库, 发现他们都需要跳转到 saf 里面授权.

    但是谷歌开发的软件竟然不需要, 有大佬知道这时什么情况? 下面是截图.

    第 1 条附言  ·  4 小时 47 分钟前
    补充一下, 我的截图的弹窗是我删除 /sdcard 文件里面的弹窗. 我自己测试的是, 使用 mt 文件管理器或者质感文件, 都是需要跳转到 saf 界面授权的. 但是谷歌极客文件目前没有, 怀疑可能使用了内部的 api . 截图里面的代码我在 aosp 项目里面没有搜索到.
    35 条回复    2024-12-24 00:35:46 +08:00
    yyzh
        1
    yyzh  
       5 小时 58 分钟前 via Android
    ...破事水...预装程序跟你自己装的程序当然权限不一样
    sheldor
        2
    sheldor  
       5 小时 54 分钟前 via Android
    @yyzh 不仅仅是预装程序这么简单,在阉割了 play 服务的手机上重新安装 play 服务和 play 商店,通过 play 商店下载软件也不需要任何权限就能自动安装
    ranaanna
        3
    ranaanna  
       5 小时 45 分钟前
    猜测应该是在安装的使用已经提示必须要了 SD 卡写入权限,或者第一次运行 google files 时给了 SD 卡写入权限、并且选了"Don't ask again"了吧。没有什么 api 可以偷偷用的
    jeesk
        4
    jeesk  
    OP
       5 小时 40 分钟前
    @yyzh 不是预装程序. 绝对不是.
    moefishtang
        5
    moefishtang  
       5 小时 16 分钟前
    我使用不同的 Android11 设备从 Play Store 下载 Files by Google 进行测试,是弹出了申请权限的提示的,要求跳转到设置页面授予“授予所有文件的访问权限”
    Android11 ColorOS11

    jeesk
        6
    jeesk  
    OP
       5 小时 14 分钟前
    @moefishtang 高版本是这样的, 文件管理权限就可以了. 但是低版本的安卓, sdcard 需要单独权限.
    NewYear
        7
    NewYear  
       5 小时 10 分钟前
    @moefishtang

    这个软件的版本号简直逆天……
    moefishtang
        8
    moefishtang  
       4 小时 57 分钟前
    @jeesk #6 我找了台 Android8.0 的 EMUI 设备,也是出现了授权提示的。


    看来在 8.0 以下应该是用了别的权限。
    jeesk
        9
    jeesk  
    OP
       4 小时 53 分钟前
    @moefishtang 有 sdcard 外置的吗? 试一试删除或者添加 sdcard 的文件呢?
    yyzh
        10
    yyzh  
       4 小时 49 分钟前 via Android
    @sheldor 隐藏≠阉割.google 服务一直都预装在机子里.只是隐藏入口而已
    除了自己装 app 来调出入口也能进设置调出
    小米系:更多设置-账号与同步-谷歌基础服务
    vivo 系: 账号与同步-谷歌基础服务管理
    oppo 系: 其他设置-google 设置
    位置跟描述可能不一样,不过也大差不差
    然后去手机自带的官方商店更新 google play 就是
    moefishtang
        11
    moefishtang  
       4 小时 47 分钟前
    @jeesk #9 没有,而且这个弹窗首次进入的时候就弹出了,如果不授权根本没法进入应用
    倒是有台 Android11 设备支持 SD 卡,不过我认为没有额外测试的必要
    jeesk
        12
    jeesk  
    OP
       4 小时 46 分钟前
    @moefishtang android 11 我不清楚, 要不你也试一试. 我的是删除 sdcard 文件里面弹出来的.
    moefishtang
        13
    moefishtang  
       4 小时 27 分钟前
    @jeesk #12 我使用 MT 管理器在没有授予权限的情况下进行读写操作,是不行的
    另外 MT 管理器分两个版本,使用标准版本,即使未授予权限,依然可以看到存储设备中包含的文件夹(里面的文件看不到),target28 版本未授予权限的话什么也看不到
    至于 SDCard ,OneUI 在 Android11 下挂载 SDCard 的方式非常奇怪,是挂载在/storage/5CB9-B555 目录下的,不过在开启使用 DocumentAPI 读写外置存储后,会跳转“文件”app 进行授权,在这之后可以在“授予所有文件的访问权限”未授权的情况下自由读写外置 SD 卡文件。
    所以即使读写外置 SDCard ,依然是需要授权的,虽然走的不是 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE (在权限管理器里可以控制的是这个,即“存储”)。至少在 Android11 是这样
    moefishtang
        14
    moefishtang  
       4 小时 25 分钟前
    @jeesk #12 Google 文件极客没法测试,因为如果我不授予权限,进都进不去
    jeesk
        15
    jeesk  
    OP
       4 小时 17 分钟前
    @moefishtang 这个就是差异了, 你看我的截图, 极客文件就没有跳到 saf 申请文件.
    jeesk
        16
    jeesk  
    OP
       3 小时 57 分钟前   ❤️ 1
    @moefishtang 文件管理权限和允许访问/sdcard/的权限不是一个.
    moefishtang
        17
    moefishtang  
       3 小时 55 分钟前
    @jeesk #15
    在 Android Studio 下开了个 5.0 的虚拟机,确实没有任何额外授权,在那个首次弹窗提示后直接能自由对文件进行读写操作了。
    不过我也下载了 MT 管理器,同样不需要额外申请就可以读写/storage/sdcard 下的文件。我认为在这些低版本的系统上权限管理不严。文件极客通过正常的 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限就可以对文件进行操作,没必要走其他途径
    另外,我去 APKMirror 查了下,文件极客分两个版本,Android8.0 以上的机型和 Android5.0 以上的机型分发的是两种不同的安装包
    moefishtang
        18
    moefishtang  
       3 小时 53 分钟前
    @moefishtang #17 这是 Android5.0 下文件极客申请的权限
    jeesk
        19
    jeesk  
    OP
       3 小时 48 分钟前
    @moefishtang 不是这样的.

    我说的是谷歌可以不通过 saf 就去管理 sdcard 的文件, 截图是我的弹窗. 但是其他应用都是通过跳转到 saf 申请权限才能反问 sdcard 的目录. 我想知道谷歌为何能这样. 如果 mt 和极客文件都是一样的流程反而我没有什么疑问了.
    moefishtang
        20
    moefishtang  
       3 小时 44 分钟前
    @jeesk #19 不是 SAF ,我是指那个欢迎页面,没有你图中那个弹窗提示
    另外动态权限申请是 6.0 才有的,5.0 还是安装时授权。而且从申请的权限看,文件极客申请了 sdcard 读写权限的,想不通为何要用另外的方式读写
    我的建议是你在你的设备上卸载并重新安装文件极客,观察反应。
    jeesk
        21
    jeesk  
    OP
       3 小时 41 分钟前
    @moefishtang 晚点我可以搞个视频发出来让大家看看.
    GPLer
        22
    GPLer  
       3 小时 34 分钟前 via Android
    早年我记得 shell 权限好像会高一点,然后 Google 系应用权限是会高一点,手动安装的商店下载安装应用是不用任何确认的,感觉哪里写了个白名单,但一时半会找不到了。
    moefishtang
        23
    moefishtang  
       3 小时 31 分钟前
    @jeesk #21 应该不是什么奇怪的事情,Android 几个大版本对于读写权限的改动有很多,趋势是越来越严格的,Android11 系统中即使是系统预装的文件管理器(不是 DocumentUI )也无法读写/sdcard/Android/data 目录,应该是出于隐私保护的考虑。
    RikkaW
        25
    RikkaW  
       3 小时 15 分钟前
    只存活了 7.0 7.1 两个版本(
    所以鲜为人知((((((
    jeesk
        26
    jeesk  
    OP
       3 小时 13 分钟前 via Android
    @RikkaW 我的是 android 8.1 呢
    jeesk
        27
    jeesk  
    OP
       2 小时 31 分钟前
    @RikkaW
    @moefishtang
    @GPLer
    @moefishtang
    @yyzh
    @NewYear
    @ranaanna
    @yyzh

    这个是视频链接, 你们可以看一看是不是 https://tmp.link/f/67697ff560909
    moefishtang
        28
    moefishtang  
       2 小时 9 分钟前
    @jeesk 能看下应用详情和权限管理吗,我想试试看在 Android8.0 下复现这个情况
    24 楼提到的 StorageVolume 那个我编了个例程,发现这个在 8.0 下是弹出了权限申请的,7.1 的我在试
    moefishtang
        29
    moefishtang  
       1 小时 54 分钟前
    @moefishtang 都要申请权限的好像...
    jeesk
        30
    jeesk  
    OP
       1 小时 48 分钟前
    @moefishtang 有出现视频里面的 dialog 吗?
    jeesk
        31
    jeesk  
    OP
       1 小时 47 分钟前
    @jeesk 视频里面的极客文件和图库都是跳过 saf 了的.
    moefishtang
        32
    moefishtang  
       1 小时 45 分钟前
    @jeesk saf 都弹出了,另外没给 READ_EXTERNAL_STORAGE 权限会报 Permission Denied 。
    moefishtang
        33
    moefishtang  
       1 小时 43 分钟前
    @jeesk 玄学的地方就在于怎么拿到读权限的
    moefishtang
        34
    moefishtang  
       1 小时 41 分钟前
    @moefishtang 玄学的地方就在于文件极客怎么拿到读权限的
    或者把文件极客换个签名重新打包安装下,看还能不能读?
    jeesk
        35
    jeesk  
    OP
       1 小时 21 分钟前
    @moefishtang 视频里面都授权了 READ_EXTERNAL_STORAGE , 测试之前就授权了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1242 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.