静态区域中的按需权限



最新的 Android 6.0 强制开发者按需检查和请求权限,并在以前的版本中使用支持库通过以下调用执行此操作:

ContextCompat.checkSelfPermission(someAndroidContext, somePermission)

但是,我有一个特殊情况,我需要在任何Context存在之前的文件 I/O 权限,因为本机库提取和加载必须在上下文成立之前的类static初始化期间发生。将权限添加到清单不起作用(应用程序在具有 Android>= 6.0 的全新手机上已损坏)。

请尽量不要建议诸如"不要提取库"之类的解决方法或要求太多有关要求的详细信息等,因为我可能无法自由讨论这些细节,该项目很大,并且存在相互依赖的库,这些库必须在加载之前处于非打包空间中,并且还有本身非常复杂的项目的第三方库(一个有 20+ 个经过精心优化和构建的依赖项根据客户端请求手动用于特定体系结构)。

TL;DR 有没有办法在我们的应用程序启动之前"预先询问"权限,或者在没有Context的情况下请求权限?

有没有办法在我们的应用程序启动之前"预先询问"权限

将你的targetSdkVersion保持在23以下,直到时间结束,祈祷谷歌不要改变规则,祈祷你不要想出一个竞争的理由将targetSdkVersion提高到23或更高。如果targetSdkVersion为 22 或更低,则会在安装时授予您的权限(与 Android 5.1 及更低版本一样)。

否则,没有。

另请注意,即使具有预先授予的权限,您仍可能无法写入外部存储。欢迎用户安装你的应用,进入"设置",撤销存储权限,然后运行你的应用。

请求没有上下文的权限?

不。请求权限的形式是启动系统提供的活动,这需要Context

我有一个特殊情况,我需要在任何上下文存在之前的文件 I/O 权限,因为本机库提取和加载必须在上下文形成之前的类静态初始化期间发生

内部存储不需要"文件 I/O 权限"。出于明显的安全原因,将库提取到外部存储是愚蠢的。

最新更新