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

发现一个问题, Android6.0 以后加入了权限动态申请的机制,但是为什么在《茄子快传》这个应用中看不到任何关于向用户申请权限的提示,并且本地存储的读写权限也都是默认授予的,不太清楚这是如何操作的?

  •  
  •   merpyzf · 2018-12-03 00:17:21 +08:00 via Android · 10046 次点击
    这是一个创建于 2211 天前的主题,其中的信息可能已经有所发展或是发生改变。
    6 条回复    2018-12-06 12:11:01 +08:00
    Android2MCU
        1
    Android2MCU  
       2018-12-03 00:26:09 +08:00 via iPhone   ❤️ 2
    target sdk 低于 6.0 版本,权限都是安装时授予,无需再动态申请。我自己给系统写 demo app 的时候常这么干
    CEBBCAT
        2
    CEBBCAT  
       2018-12-03 01:12:12 +08:00 via Android
    一楼结贴
    merpyzf
        3
    merpyzf  
    OP
       2018-12-03 08:57:00 +08:00 via Android
    @Android2MCU 好的👌,谢谢你了
    crayygy
        4
    crayygy  
       2018-12-03 09:49:22 +08:00   ❤️ 2
    1L 说的很清楚了,我再补充一点额外的好了。

    所谓的 Android 6.0 加入了动态权限申请机制,需要达成两个条件。
    1. 机器的 Android OS version >= 6.0
    2. Application 的 targetSdk >= 23 (也就是 Android 6.0 的 SDK version)

    在 Android 6.0 发布的时候,为了避免出现应用不能向上兼容的情况,所有 targetSdk < 23 的应用还可以继续下载安装,但是在 Google Play 上,下载之前会有一个 popup 告诉你,这个应用都申请了哪些权限。 你可以在系统设置里面关掉这个 App 对应的权限,但是不保证能够正常工作(因为 App 可能没有 check 没有权限的情况)。

    而当应用 targetSdk >= 23 以后,在编写代码的时候必须实现动态权限申请,否则根本没办法使用权限。而很多应用为了逃开这个限制,选择了继续 targetSdk 到 22。但是编译的 SDK version 提升。比如我曾经见过的 网易云音乐,targetSdk 22,但是却使用了 Android 7.0 的新功能。

    为了解决这个问题,Google 从去年开始实施一个规定(针对 Google Play ),到 2018 年 11 月以后,所有的应用要上架、更新,必须 targetSdk 到 Oreo 以上,而从 2019 年开始,上架、更新应用的 targetSdk 版本必须是一年以内发布的版本(这条规则比较绕,我们也看了好几遍)。

    详细的信息可以参考这篇官方文章 https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html
    merpyzf
        5
    merpyzf  
    OP
       2018-12-03 12:49:07 +08:00 via Android
    @merpyzf 谢谢你的回答,反思下自己,很多时候对于技术就只停留在会用就行了,却没有深挖其中隐含的细节。受教了!
    lisjiang
        6
    lisjiang  
       2018-12-06 12:11:01 +08:00
    我也来补充一下,现在如果新应用上架 googleplay,targetSDK 必须大于等于 26,也就是说,权限适配必须做。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2210 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:58 · PVG 09:58 · LAX 17:58 · JFK 20:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.