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

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

  •  
  •   merpyzf · 13 天前用 Android 发布 · 1338 次点击
    6 回复  |  直到 2018-12-06 12:11:01 +08:00
        1
    Android2MCU   13 天前 via iPhone   ♥ 2
    target sdk 低于 6.0 版本,权限都是安装时授予,无需再动态申请。我自己给系统写 demo app 的时候常这么干
        2
    CEBBCAT   13 天前 via Android
    一楼结贴
        3
    merpyzf   13 天前 via Android
    @Android2MCU 好的👌,谢谢你了
        4
    crayygy   13 天前   ♥ 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
        5
    merpyzf   13 天前 via Android
    @merpyzf 谢谢你的回答,反思下自己,很多时候对于技术就只停留在会用就行了,却没有深挖其中隐含的细节。受教了!
        6
    lisjiang   10 天前
    我也来补充一下,现在如果新应用上架 googleplay,targetSDK 必须大于等于 26,也就是说,权限适配必须做。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2192 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 23ms · UTC 14:41 · PVG 22:41 · LAX 06:41 · JFK 09:41
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1