可以使用Api 23(6.0)进行编译并维护旧的权限系统(安装时)吗?

时间:2016-02-02 07:13:38

标签: android android-gradle android-build android-api-levels

我在官方的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进行编译并维护旧的权限系统吗?

由于

1 个答案:

答案 0 :(得分:7)

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

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

  

当我们调用需要撤销权限用户的函数时   targetSdkVersion小于23的应用程序,没有例外   被抛出相反,它只是什么都不做。对于功能   返回值,它将返回null或0取决于   案件。虽然应用程序不会因调用a而崩溃   功能。它可能仍然会因应用程序的下一步而崩溃   那些返回的价值。