2

我在官方的 android 博客上读到了这个:

权限更改 使用 Marshmallow,权限已从安装时转移到运行时。这是 SDK 23+ 的强制性更改,这意味着它将影响所有开发人员和所有面向 Android 6.0 的应用程序。

所以...如果您使用 Android 6.0 (api 23) 编译但您的目标是 Android 4.4 (api 20),是否可以维护旧的权限系统?

我的意思是这样做:

    compileSdkVersion 'Google Inc.:Google APIs:23'
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 20
    }

我现在项目的必要条件是维护旧的权限系统并以 sdk 版本 20 为目标(因为我需要维护旧的通知系统,如果您的目标 sdk 版本高于 20,则必须使用新的通知系统)。那么...如果我以 sdk 版本 20 为目标,我可以使用 Api 23 编译并维护旧的权限系统吗?

谢谢

4

1 回答 1

7

targetSdkVersion是的,如果设置为 <23 ,将使用旧的权限系统(即使在 Android 6.0 上) 。但是,Android 6.0 上的用户稍后可以从Settings手动禁用个别权限。虽然 Android 6.0 会在用户尝试这样做时发出警告,但他们仍然可以撤销。

现在的问题是用户撤销权限后你的应用程序会崩溃吗?

当我们调用一个需要用户在targetSdkVersion小于 23 的应用程序上撤销的权限的函数时,不会抛出异常。相反,它只会什么都不做。对于返回值的函数,它将根据情况返回 null 或 0。尽管应用程序不会因调用函数而崩溃。它可能仍然会因为该应用程序接下来对这些返回值所做的操作而崩溃。

于 2016-02-02T07:19:06.070 回答