Android M api 22 错误,未找到 requestPermissions() 方法

Android M Error on api 22, and requestPermissions() method not found

我在 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);
    }
}

我受到启发 检查我的问题 在 Eclipse 中给我一个关于 Build.VERSION_CODES.M(M not found) 的错误,然后,回调方法 requestPermissions(mpArray, REQUEST_PERMISSIONS) 也没有找到,有什么建议吗?

如果我在 API 22 上工作,并且我正在使用 Android 6.0 M 进行编译。我如何才能正确解决 READ_EXTERNAL_STORAGE 等危险权限的问题API22?

根据文档,Build.VERSION_CODES.M and requestPermissions() 已添加到 API 级别 23。

由于您使用 API 级别 22 进行编译,因此这些根本不存在。

要访问API23级介绍的API,需要用API23编译,继续编译就不能访问这些API API 22.

请注意,仅使用 API23 进行编译不会影响您的应用程序在任何设备上的行为方式,它只会打开更新的 APIs 供您在设备上使用 运行至少 API 23.

if I'm working on API 22, and I'm compiling with Android 6.0 M, how i can do for solve the issue for the dangerous permissions like READ_EXTERNAL_STORAGE correctly on API 22?

设备运行 API 22 将继续使用旧的安装时模型获取权限。 运行 API 22 及以下设备没有任何变化。只有设备 运行 API 23 使用新的运行时权限模型。