V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
azh7138m
V2EX  ›  全球工单系统

网易漫画 Android 需要电话权限才能使用

  •  
  •   azh7138m · 2018-09-08 23:49:20 +08:00 via Android · 5861 次点击
    这是一个创建于 2266 天前的主题,其中的信息可能已经有所发展或是发生改变。
    权限是 read phone status and indentity,使用 app ops 忽略这个权限之后无法使用 app,
    不清楚这个设计是为什么,微信 支付宝 淘宝禁用这个权限之后可以正常使用
    第 1 条附言  ·  2018-09-10 13:01:27 +08:00

    大概是Android权限设计捉鸡,参考 Changes to Device Identifiers in Android O

    Instead, they can use a new Android O API, Build.getSerial(), which returns the actual serial number, as long as the caller holds the PHONE permission.

    很捉鸡,有没有大佬说下为啥这么设计

    43 条回复    2019-02-13 21:17:36 +08:00
    zts1993
        1
    zts1993  
       2018-09-08 23:51:29 +08:00
    活捉法师
    green15
        2
    green15  
       2018-09-09 00:15:01 +08:00 via iPhone
    网易的东西背后各种小动作很多的……
    throns
        3
    throns  
       2018-09-09 00:18:18 +08:00 via Android
    活捉两位校友
    remon
        4
    remon  
       2018-09-09 00:33:58 +08:00 via Android
    微信和淘宝你确定不给权限能用?
    azh7138m
        5
    azh7138m  
    OP
       2018-09-09 00:50:32 +08:00 via Android
    @remon 使用 app ops 忽略这个权限
    写作 deny,读作 ignore
    palxie
        6
    palxie  
       2018-09-09 09:28:47 +08:00   ❤️ 1
    这个权限问题应该不大吧,通常是获取手机 iemi 等信息, 并不是读取通讯录权限, 但是没权限就不允许用网易就有点夸张了
    ks3825
        7
    ks3825  
       2018-09-09 09:28:52 +08:00 via Android
    一般遇到这种,我选择弃用
    loveour
        8
    loveour  
       2018-09-09 10:48:14 +08:00
    越发觉得权限设计不合理,应该更细分。国内没有大流氓治这些厂商,其实按理说应用商店应该不允许这样的 App 上架的。不过说到底是隐私保护的法律不健全,光要求必须保护好隐私,却不规定不允许随便搜集隐私,那还能保护个蛋了。我是专门有一台手机用来随便安装这些应用。
    azh7138m
        9
    azh7138m  
    OP
       2018-09-09 11:01:02 +08:00 via Android
    @loveour 国内应用商店才不管这些,网易也少有 app 能上架 play
    DeweyReed
        10
    DeweyReed  
       2018-09-09 11:06:23 +08:00
    READ_PHONE_STATE:允许该应用访问设备的电话功能。改权限可让该应用确定本机号码和设备 ID、是否处于通话状态以及拨打的号码。
    很多厂商主要用这个权限确定设备 ID。估计是防止虚拟机、机器人什么的。
    azh7138m
        11
    azh7138m  
    OP
       2018-09-09 11:21:22 +08:00 via Android
    @DeweyReed 道理我都懂,可是网易阅读 支付宝 淘宝 微信在忽略这个权限后都是可以正常使用的
    woyaojizhu8
        12
    woyaojizhu8  
       2018-09-09 11:22:51 +08:00
    无法使用,提示什么?网易其他 app 也这样吗?
    kassadin
        13
    kassadin  
       2018-09-09 11:25:51 +08:00
    首先这个权限描述过大,一般都是用来获取唯一标识的,第三方 SDK Bug 统计、推送、IM 等通常都会要这个权限,所以从应用的代码角度来说,强行要权限容错处理上更简单。

    当然不排除大厂需求旺盛,要到这种特殊权限后加上隐藏 API 等真的会拿你各种数据…
    loveour
        14
    loveour  
       2018-09-09 12:17:33 +08:00
    @azh7138m #5 如果整个社会对隐私重视度不够,商店确实也没动力管。这个应该从法律层面来要求的,可惜。
    tadtung
        15
    tadtung  
       2018-09-09 13:32:22 +08:00 via Android
    国内 app 很多都是这样。
    前几天下了个小米的就是。一堆权限,定位,短信读取等。。。关键还是这些对于 app 都没什么用处,不给权限 app 打不开。。。干脆卸载了,用 ios 版本的。
    XinLake
        16
    XinLake  
       2018-09-09 13:41:04 +08:00 via Android
    这个权限很多时候是为了读取一个和手机关联的唯一 ID 号,移动网络能够保证这个 ID 号全网唯一。这个权限的能力不大,如果 App 视图读取通讯录、拨打 /接听电话,App 还要请求其他的权限。

    不过这个权限可以不用的。很早的时候一些 ID 生成算法就能够保证即使 10 年不停地生成也仅有亿分之一的概率重复。即使重复,App 和服务器通信时发现重复可以再次生成一个,没有任何计算负担。
    remon
        17
    remon  
       2018-09-09 13:43:36 +08:00 via Android
    @azh7138m 抱歉没看到 appops,应该是多加了一步判断字段是不是为空,这个不 root 没办法了
    fengleidongxi
        18
    fengleidongxi  
       2018-09-09 14:01:20 +08:00
    @remon ROOT 用什么办法? XP 吗?
    fengleidongxi
        19
    fengleidongxi  
       2018-09-09 14:06:07 +08:00
    @azh7138m 再补充一眯,这个权限可以获取 imsi。如果不喜欢以后可以选择 web 或者收费应用
    huclengyue
        20
    huclengyue  
       2018-09-09 14:36:03 +08:00 via Android
    @XinLake 生成的 ID 不能保证在一台设备上的唯一性
    huclengyue
        21
    huclengyue  
       2018-09-09 14:40:16 +08:00 via Android
    可以用 AndroidID 代替 但是 AndroidID 手机重置后就会改变。但是万一出个什么邀请送积分的活动估计真有人不断重置来注册,所以大部分都用这个来做为唯一 ID 这样不管你有没有登陆,卸载或者重置系统你的数据都会在。。emmmm 作为开发者我不反对用这个 ID
    XinLake
        22
    XinLake  
       2018-09-09 14:48:58 +08:00 via Android
    @huclengyue 这个 ID App 生成一次就可以保存,以后就用存储的 ID。虽然可以改,但是除了开发者,一般人不会动到那里,有时候还是很适合的。
    remon
        23
    remon  
       2018-09-09 15:30:39 +08:00 via Android
    @fengleidongxi 是的啊,appops 类的我知道的都是返回空值
    hhsuan
        24
    hhsuan  
       2018-09-09 15:34:20 +08:00 via Android
    这锅要谷歌来背
    terrytw
        25
    terrytw  
       2018-09-09 15:37:46 +08:00
    这个设计就是为了获取你的隐私
    不爽不要用
    irainsoft
        26
    irainsoft  
       2018-09-09 16:21:03 +08:00
    感觉 Android 应该是需要专门出一个获取 IMEI 之类信息的权限 (滑稽
    lostberryzz
        27
    lostberryzz  
       2018-09-09 16:26:33 +08:00
    抱歉,用国产 App 就别谈隐私了,做个顺民少点麻烦
    fengleidongxi
        28
    fengleidongxi  
       2018-09-09 16:29:48 +08:00
    @remon 把 OP 设置成 ignore,并不是全部都有效
    fengleidongxi
        29
    fengleidongxi  
       2018-09-09 16:34:57 +08:00
    @hhsuan 这个不能让他来背,play 的大小应用有这样设计的吗?
    tanranran
        30
    tanranran  
       2018-09-09 18:01:39 +08:00
    获取 iemi 必须得电话权限,这锅得谷歌背。其实我们也不想啊,
    ydxred
        31
    ydxred  
       2018-09-09 21:16:51 +08:00
    ios 的貌似不需要。。。
    frozenthrone
        32
    frozenthrone  
       2018-09-10 07:47:45 +08:00 via iPhone
    珍爱生命远离安卓和国产 app
    aaron61
        33
    aaron61  
       2018-09-10 08:38:40 +08:00
    我这里淘宝,天猫,京东不给权限都用不了
    vibin
        34
    vibin  
       2018-09-10 11:00:57 +08:00
    买 iPhone 吧
    amew
        35
    amew  
       2018-09-10 11:33:12 +08:00
    这个锅真得谷歌来背...
    google 没有在碎片化如此严重的生态下给 Android 开发者一个能够真正全平台通用的唯一 ID 获取的方法。
    在国外,几乎每一台 android 手机都会运行有 google 框架,所以这个问题还好解决一点
    在国内,没办法,为了知道你真的是你,普通 Androider 能够想到的靠谱方法只能是去读你的 IMEI 了

    PS for Android developers: 其实如果不是特别要求的话,可以考虑在安装时利用 UUID.randomUUID()生成一个随机唯一 ID,可以解决大多数问题,这样就不用请求敏感权限,省的甚至都被程序员喷了
    zthinking
        36
    zthinking  
       2018-09-10 11:33:44 +08:00
    手头的华为可以单独开 imei 权限,不用把整个通讯录都授权
    hhsuan
        37
    hhsuan  
       2018-09-10 12:20:04 +08:00
    @amew #35 anroid 里提供了获取唯一设备 ID 的 API。
    azh7138m
        38
    azh7138m  
    OP
       2018-09-10 13:11:47 +08:00
    @amew Settings.Secure.ANDROID_ID
    只是大家不愿意使用,很奇怪,国内安卓开发似乎停留在 4.X 的时代
    ysc3839
        39
    ysc3839  
       2018-09-10 13:25:47 +08:00
    @amew Android 有 AndroidID,获取 IMEI 不是因为没有提供,而是因为开发商想在应用重新安装或者手机重置后继续跟踪用户。iOS 没提供任何唯一 ID,那些软件也不是不能运行。
    zjddp
        40
    zjddp  
       2018-09-10 14:03:21 +08:00
    无非是现在没办法获取相对可靠的用户唯一标识了。这一点上不吹不黑,水果安卓半斤八两。
    azh7138m
        41
    azh7138m  
    OP
       2018-09-10 18:36:17 +08:00 via Android   ❤️ 1
    @ysc3839 iOS 现在提供了,只能存有限的两个标志位
    amew
        42
    amew  
       2018-09-11 09:21:52 +08:00
    @azh7138m ANDROID_ID 有时也会出问题的,概率性出现 ID 重复的问题,这个锅得国内厂商来背
    qmqmoe123
        43
    qmqmoe123  
       2019-02-13 21:17:36 +08:00
    苹果保平安系列
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3188 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:04 · PVG 08:04 · LAX 16:04 · JFK 19:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.