【问题标题】:use android 6.0 api 23 permissions to low devices(like api 22 almost)对低设备使用android 6.0 api 23 权限(几乎像api 22)
【发布时间】:2016-06-27 01:42:20
【问题描述】:

这是我在这里的第一个问题,也许我会解释得有点糟糕,但好吧,看看: 我有一个使用 api 22 库的项目,但使用 android 6.0(api 23)编译,我想继续使用 api 22 库,但是当我使用 android 6.0 设备运行我的项目时,我遇到了权限问题...

我的问题:有没有一种方法可以让您在 Android 5.1.1 中工作并使用必要的权限方法在 Android 6.0 上进行编译?我的意思是,我可以添加一些库,以使用像onRequestPermissionsResult(...) 这样的回调吗?我尝试将 api 23 库添加到我的项目中,但他的方法不起作用,有什么建议...??

【问题讨论】:

  • 这对你很有帮助sathyabaman.com/2016/06/19/…
  • 我以前读过类似的东西,但我只是想知道我是否可以继续使用 api 22 还是有必要将我的所有项目都更改为 api 23?还是有办法解决我的问题...
  • 使用 API 22 或 23 没有问题。如果您不请求上述权限,它将适用于所有运行 android 5 及更低版本的设备。但是当你在 Android 6.0 上运行它时,应用程序会崩溃。

标签: android android-6.0-marshmallow android-permissions android-library


【解决方案1】:

1。在 this page 上检查您需要的权限是否是危险权限。

2.在String数组中列出你需要的所有危险权限,如下所示。

private static final String[] REQUIRED_PERMISSIONS = new String[]{your_permissions_here};

3。将以下代码添加到您的 onCreate() 中。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    LinkedList<String> missingPermissions = new LinkedList<>();
    for(String p : REQUIRED_PERMISSIONS){
        if(checkSelfPermission(p) != PackageManager.PERMISSION_GRANTED){
            missingPermissions.add(p);
        }
    }
    if(!missingPermissions.isEmpty()){
        String[] mpArray = new String[missingPermissions.size()];
        missingPermissions.toArray(mpArray);
        requestPermissions(mpArray, REQUEST_PERMISSIONS);
    }
}

REQUEST_PERMISSIONS 是一个常量整数,用于标识此请求。

【讨论】:

  • 我明白,但是当我添加方法 requestPermissions(...) 时给我一个错误,它显示“它未定义类型 myClass.java”并调用 Build.VERSION_CODES.M(未找到 M)。 ..我想我需要在某个地方添加一个棉花糖图书馆……对吗?导致我在 api 22 库工作...或您的答案的另一个解决方案?
猜你喜欢
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2016-08-01
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多