【问题标题】:From which api should i ask permissions?我应该从哪个 api 请求权限?
【发布时间】:2017-06-13 14:26:26
【问题描述】:

嘿,我正在尝试请求存储访问权限,但我注意到在我的另一部具有 android 5.0 的手机中,请求权限会使应用程序崩溃。在这个 android 版本中我应该怎么做才能在不使应用程序崩溃的情况下请求许可,我应该从哪个 android 版本开始呢?

这是请求权限的代码:

  int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 0;
    if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (shouldShowRequestPermissionRationale(
            Manifest.permission.READ_EXTERNAL_STORAGE)) {
        // Explain to the user why we need to read the contacts
    }

    requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
            MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);

    // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an
    // app-defined int constant that should be quite unique

    return;
}

【问题讨论】:

  • 从 API 级别 23+
  • 对于所有级别,您必须在 AndroidMenifest.xml 文件中添加权限,但对于 api >=6,您必须在代码中添加额外权限,就像您在代码中所做的那样。对于像github.com/googlesamples/easypermissions这样的android开发使用库的binning它可以简化你的工作

标签: java android api permissions android-permissions


【解决方案1】:

动态权限需要 API 23 或更高版本,因此您可以将代码包装在有条件地检查正在运行的 API 版本中。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 0;
    if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if(shouldShowRequestPermissionRationale(
            Manifest.permission.READ_EXTERNAL_STORAGE)) {
            // Explain to the user why we need to read the contacts
        }

        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);

        // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an
        // app-defined int constant that should be quite unique

        return;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-14
    • 2021-02-16
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2016-06-22
    相关资源
    最近更新 更多