最新的Android 6.0 forces developers可以按需检查和请求权限,并使用支持库在以前的版本中通过以下调用执行此操作:
ContextCompat.checkSelfPermission(someAndroidContext, somePermission)
但是,我有一个特殊情况,我需要在存在任何Context
之前获得文件i / o权限,因为本地库提取和加载必须在课程static
期间发生在Context产生之前进行初始化。将权限添加到清单是不行的(应用程序在全新手机上打破,并且> = 6.0)。
请尽量不建议解决方法,例如"不要提取库"或者要求提供太多有关要求的详细信息,因为我可能无权讨论这些细节,项目很大,并且有相互依赖的库,在加载之前必须都在非打包的空间中,并且还有第三方库本身就是非常复杂的项目(其中一个有20多个依赖项,已针对每个客户端请求的特定体系结构进行了仔细优化和手动构建)。
TL; DR 有没有办法预先问及"我们的应用启动前的权限,或Context
答案 0 :(得分:0)
在推出应用之前,有没有办法“预先询问”权限
让你的targetSdkVersion
低于23,直到时间结束,祈祷Google不会改变规则,并祈祷你没有提出将targetSdkVersion
提升到23或更高。如果targetSdkVersion
为22或更低,则会在安装时授予您的权限(与Android 5.1及更低版本一样)。
否则,不。
另请注意,即使使用预先授予的权限,您仍可能无法写入外部存储空间。欢迎用户安装您的应用,进入“设置”,撤消存储权限,然后运行您的应用。
请求具有上下文的权限吗?
没有。请求权限的形式是启动系统提供的活动,并且需要Context
。
我有一个特殊情况,我需要文件i / o权限才能存在任何Context,因为本机库提取和加载必须在类的静态初始化期间发生,然后才会出现
internal storage您不需要“文件i / o权限”。出于明显的安全原因,将库提取到external storage是非常愚蠢的。