我正在使用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)的问题?

最佳答案

根据文档,在API级别23中添加了Build.VERSION_CODES.MrequestPermissions()

由于您使用的是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的设备才能使用新的运行时权限模型。

07-28 02:18
查看更多