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

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

  •  1
     
  •   jeesk · 37 天前 · 3794 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。
    周末不知道啥情况我偷偷的把我珍藏多年的 android 老手机拿出来玩玩了, 然后手机里面一直是安装的谷歌的文件极客和图片, 我使用 mt 文件管理器, 管理 sdcard 目录的文件, 这个时候 mt 非要叫我去 saf 授权, 授权后才能删除文件.

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

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

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

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

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


    看来在 8.0 以下应该是用了别的权限。
    jeesk
        9
    jeesk  
    OP
       37 天前
    @moefishtang 有 sdcard 外置的吗? 试一试删除或者添加 sdcard 的文件呢?
    yyzh
        10
    yyzh  
       37 天前 via Android
    @sheldor 隐藏≠阉割.google 服务一直都预装在机子里.只是隐藏入口而已
    除了自己装 app 来调出入口也能进设置调出
    小米系:更多设置-账号与同步-谷歌基础服务
    vivo 系: 账号与同步-谷歌基础服务管理
    oppo 系: 其他设置-google 设置
    位置跟描述可能不一样,不过也大差不差
    然后去手机自带的官方商店更新 google play 就是
    moefishtang
        11
    moefishtang  
       37 天前
    @jeesk #9 没有,而且这个弹窗首次进入的时候就弹出了,如果不授权根本没法进入应用
    倒是有台 Android11 设备支持 SD 卡,不过我认为没有额外测试的必要
    jeesk
        12
    jeesk  
    OP
       37 天前
    @moefishtang android 11 我不清楚, 要不你也试一试. 我的是删除 sdcard 文件里面弹出来的.
    moefishtang
        13
    moefishtang  
       37 天前
    @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  
       37 天前
    @jeesk #12 Google 文件极客没法测试,因为如果我不授予权限,进都进不去
    jeesk
        15
    jeesk  
    OP
       37 天前
    @moefishtang 这个就是差异了, 你看我的截图, 极客文件就没有跳到 saf 申请文件.
    jeesk
        16
    jeesk  
    OP
       37 天前   ❤️ 1
    @moefishtang 文件管理权限和允许访问/sdcard/的权限不是一个.
    moefishtang
        17
    moefishtang  
       37 天前
    @jeesk #15
    在 Android Studio 下开了个 5.0 的虚拟机,确实没有任何额外授权,在那个首次弹窗提示后直接能自由对文件进行读写操作了。
    不过我也下载了 MT 管理器,同样不需要额外申请就可以读写/storage/sdcard 下的文件。我认为在这些低版本的系统上权限管理不严。文件极客通过正常的 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限就可以对文件进行操作,没必要走其他途径
    另外,我去 APKMirror 查了下,文件极客分两个版本,Android8.0 以上的机型和 Android5.0 以上的机型分发的是两种不同的安装包
    moefishtang
        18
    moefishtang  
       37 天前
    @moefishtang #17 这是 Android5.0 下文件极客申请的权限
    jeesk
        19
    jeesk  
    OP
       37 天前
    @moefishtang 不是这样的.

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

    这个是视频链接, 你们可以看一看是不是 https://tmp.link/f/67697ff560909
    moefishtang
        28
    moefishtang  
       37 天前
    @jeesk 能看下应用详情和权限管理吗,我想试试看在 Android8.0 下复现这个情况
    24 楼提到的 StorageVolume 那个我编了个例程,发现这个在 8.0 下是弹出了权限申请的,7.1 的我在试
    moefishtang
        29
    moefishtang  
       37 天前
    @moefishtang 都要申请权限的好像...
    jeesk
        30
    jeesk  
    OP
       37 天前
    @moefishtang 有出现视频里面的 dialog 吗?
    jeesk
        31
    jeesk  
    OP
       37 天前
    @jeesk 视频里面的极客文件和图库都是跳过 saf 了的.
    moefishtang
        32
    moefishtang  
       37 天前
    @jeesk saf 都弹出了,另外没给 READ_EXTERNAL_STORAGE 权限会报 Permission Denied 。
    moefishtang
        33
    moefishtang  
       37 天前
    @jeesk 玄学的地方就在于怎么拿到读权限的
    moefishtang
        34
    moefishtang  
       37 天前
    @moefishtang 玄学的地方就在于文件极客怎么拿到读权限的
    或者把文件极客换个签名重新打包安装下,看还能不能读?
    jeesk
        35
    jeesk  
    OP
       37 天前
    @moefishtang 视频里面都授权了 READ_EXTERNAL_STORAGE , 测试之前就授权了。
    hingle
        36
    hingle  
       36 天前
    类似的情况 /t/1056113
    ziseyinzi
        37
    ziseyinzi  
       36 天前
    试了一下,lineageos 21 + MindTheGapps ,安装文件极客后需要手动授权 SAF
    digitalwater
        38
    digitalwater  
       36 天前
    不是。。弹窗申请权限是 android6.0 上才引入的特性。。6.0 以下根本没有这个机制。。弹什么窗
    Nitsuya
        39
    Nitsuya  
       36 天前
    盲猜 GMS 绕权. 惯用手法.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   712 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.