Java 我应该从哪个api请求权限?
嘿,我正试图请求存储访问权限,我注意到在我的另一部安卓5.0手机中,请求权限会使应用程序崩溃。在这个安卓版本中,我应该怎么做才能在不破坏应用程序的情况下获得许可?我应该从哪个安卓版本进行操作 这是请求许可的代码: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
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,请使用库,因为它可以简化您的工作