我在API 22工作,但我想在Android M 6.0中编译我的项目,我有这个代码:
在顶部声明:
private static final String[] REQUIRED_PERMISSIONS = new String[]{"READ_EXTERNAL_STORAGE"};
private static final int REQUEST_PERMISSIONS = (Integer) null;
在onCreate()
上:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
LinkedList<String> missingPermissions = new LinkedList<>();
for(String p : REQUIRED_PERMISSIONS){
if(checkCallingOrSelfPermission(p) != PackageManager.PERMISSION_GRANTED){
missingPermissions.add(p);
}
}
if(!missingPermissions.isEmpty()){
String[] mpArray = new String[missingPermissions.size()];
missingPermissions.toArray(mpArray);
requestPermissions(mpArray, REQUEST_PERMISSIONS);
}
}
我受到启发here检查我的问题
并且在Eclipse中给我一个错误Build.VERSION_CODES.M
(未找到M),然后,回调方法requestPermissions(mpArray, REQUEST_PERMISSIONS)
也没有找到,有什么建议吗?
如果我正在使用API 22,并且我正在使用Android 6.0 M进行编译。如何在API 22上正确解决READ_EXTERNAL_STORAGE
等危险权限的问题?
答案 0 :(得分:2)
根据文档,API级别23添加了Build.VERSION_CODES.M
和requestPermissions()
。
由于您正在使用API级别22进行编译,因此它们根本不存在。
要访问API级别23中引入的API,您需要使用API 23进行编译。如果继续使用API 22进行编译,则无法访问这些API。
请注意,使用API 23进行简单编译不会影响应用程序在任何设备上的行为方式,它只会打开较新的API供您在至少运行API 23的设备上使用。
如果我正在使用API 22,并且我正在使用Android 6.0 M进行编译,那么我如何才能在API 22上正确解决READ_EXTERNAL_STORAGE等危险权限的问题?
运行API 22的设备将继续使用旧的安装时模型获取权限。运行API 22及更低版本的设备没有任何变化。只有运行API 23的设备才使用新的运行时权限模型。