Java 我应该从哪个api请求权限?

Java 我应该从哪个api请求权限?,java,android,api,permissions,android-permissions,Java,Android,Api,Permissions,Android Permissions,嘿,我正试图请求存储访问权限,我注意到在我的另一部安卓5.0手机中,请求权限会使应用程序崩溃。在这个安卓版本中,我应该怎么做才能在不破坏应用程序的情况下获得许可?我应该从哪个安卓版本进行操作 这是请求许可的代码: int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 0; if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != Packa

嘿,我正试图请求存储访问权限,我注意到在我的另一部安卓5.0手机中,请求权限会使应用程序崩溃。在这个安卓版本中,我应该怎么做才能在不破坏应用程序的情况下获得许可?我应该从哪个安卓版本进行操作

这是请求许可的代码:

  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或更高版本,因此您可以将代码包装在一个条件中,以检查正在运行的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;
    }
}

从API级别23+开始,对于所有级别,您必须在AndroidMenifest.xml文件中添加权限,但对于API>=6,您必须在代码中添加额外权限,就像在代码中一样。对于android开发的binning,请使用库,因为它可以简化您的工作