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

关于安卓应的用程序权限?

  •  
  •   FunyKis · 2015-10-25 13:10:18 +08:00 · 10547 次点击
    这是一个创建于 3346 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前一直没用过安卓系统,目前有以下 2 个疑问:
    1.不同 app 安装后弹出的应用程序许可选项有的多有的少(例如通话,读联系人,使用 gps 等),那些没出现的是默认禁用的吗?
    2.应用程序许可全不打勾的安卓 apk 默认有哪些权限?

    13 条回复    2017-02-10 17:28:54 +08:00
    yxzblue
        1
    yxzblue  
       2015-10-25 13:14:59 +08:00
    没开发过安卓程序
    1. 安装时,会有提示该 APP 需要获取的所有权限列表。安装完后,弹出的获取权限提示,只针对那一次。
    2. 不知道
    cabbage
        2
    cabbage  
       2015-10-25 14:11:35 +08:00
    1 、安装后弹出有多有少的是声明的特殊权限,有由你选择开启与否,如果安装包之前没有提出权限声明的话,系统是绝对不会分配对应权限的,而且应用在执行时会出错。
    2 、所有应用默认可以读取手机串号、网卡物理地址等基本硬件信息,也有一定的存储空间读写权限。
    ericyl
        3
    ericyl  
       2015-10-25 17:25:16 +08:00
    @cabbage 为什么我记得读手机 IEMI 需要 READ_PHONE_STATE 权限,网卡 Mac 地址需要 ACCESS_WIFI_STATE 权限,当然 android 权限考虑的就是在获取到外部存储权限后就可以直接获取照片,如果不赋予外部存储权限,基本上的 app 都会崩
    cabbage
        4
    cabbage  
       2015-10-25 17:33:14 +08:00
    @ericyl 但是这些权限用户并不能关闭?
    ericyl
        5
    ericyl  
       2015-10-25 17:48:26 +08:00
    @cabbage 我没用过第三方的权限管理工具,我就说下 android 6.0 自带的权限管理: READ_PHONE_STATE 也就是电话权限可以关,外部存储权限也可以关, ACCESS_WIFI_STATE 是没法关的,大概或许应该(?)是 RW 的权限是可以关的, ACCESS 的权限是没法关的。反正 android 的权限是个大坑。现在很多应用判断手机唯一性的标示是通过获取 DeviceId 和网卡 Mac 地址来实现的,所以默认都会去拿 READ_PHONE_STATE 电话权限和 ACCESS_WIFI_STATE 权限,以及外部存储的读写权限。。。
    honeycomb
        6
    honeycomb  
       2015-10-26 10:23:19 +08:00
    不考虑第三方的或者隐藏的权限管理工具(*)的话,目前只有 Android 6.0 自带交互式的权限系统,这个系统形式上基本和 iOS 的一致。区别在于:

    为 Android 6 设计的应用采用这一套做法,为旧版本的应用则(在应用 Android 6 的一些全局约束外)默认按照旧系统的做法放行所有权限,但用户可以随时吊销 protection level 为 dangerous 列表中的任意权限,以及 wirte_settings 和在其它应用上显示两个非 runtime-permission 。

    禁掉 wirte_settings 后,应用将不能写入一个系统数据库,似乎还因此导致了别的限制。
    很多应用喜欢把设备识别码写到这个数据库。

    新权限系统的原型是 Android 4.3 就出现,但不向用户开放界面的 AppOps(*),在 Android 6 里, AppOps 依然存在,且是新权限系统的基础

    @cabbage
    6.0 以前的 Android 没有吊销权限的能力


    @ericyl
    至于本机的 WiFi 与 BT 的 mac
    6.0 的处理是一律返回 20:00:00:00:00:00
    现在还有一个洞,是通过 /proc 还能获得真实的本机 MAC

    外部的 mac 需要获得定位权限系统才会提供
    ericyl
        7
    ericyl  
       2015-10-26 10:31:41 +08:00
    @honeycomb soga
    ericyl
        8
    ericyl  
       2015-10-26 10:38:29 +08:00
    @honeycomb 刚试了一下确实返回 20:00:00:00:00:00
    Reficul
        9
    Reficul  
       2015-10-26 13:09:02 +08:00
    @ericyl

    怪不得刷了 6.0 之后用手机订外卖一直都告诉我今日两单优惠已经使用。。。。
    honeycomb
        10
    honeycomb  
       2015-10-26 15:09:21 +08:00   ❤️ 1
    @Reficul
    现在还是能唯一识别 6.0

    第一个是 /proc 还能找到真实 MAC ,这部分要到 Android N 才会堵上
    第二个是 Android ID/GSF ID/seiral(永久的)还能拿到,特别是 seiral 没有保护掉,所以还是能唯一追踪硬件
    cabbage
        11
    cabbage  
       2015-10-26 21:38:07 +08:00
    @honeycomb 原来如此,但是统一返回 20......这样真的好吗哈哈哈😅
    honeycomb
        12
    honeycomb  
       2015-10-26 23:11:58 +08:00
    @cabbage

    iOS 在 7 还是 8 就这么做了
    而且它更绝,不考虑这次有米非法使用了私有 API ,在 iOS 上第三方 app 根本找不到一个可以永久标识 iOS 设备的串号,只要重置设备,它就认不出了

    初次以外, iOS9 不允许第三方 app 检索设备上还有哪些别的应用,甚至苹果还因此对分享 API 做了限制
    haato
        13
    haato  
       2017-02-10 17:28:54 +08:00
    @honeycomb 请教下 android6.0 以后,读写存储卡的权限包含读写 sdcard/DCIM 的权限吗?包含的话岂不是一给存储授权,就能获取用户照片信息了?貌似很多应用都要存储权限啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1664 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 16:25 · PVG 00:25 · LAX 08:25 · JFK 11:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.