比如我要获取一个打开相机的权限
1.最开始还是在AndroidManifest.xml写进自己需要的权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2.在Activity中首先建一个String数组,把需要的权限都加进去:
//设置权限
private String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA};
private static final int PERMISSIONS = 1000; //请求码
3.在需要的位置写入请求的权限
if (EasyPermissions.hasPermissions(MainActivity.this, permissions)){
Intent intent_code = new Intent(this, CaptureActivity.class);
startActivityForResult(intent_code, 111);
}else {
//没有打开相关权限、申请权限
EasyPermissions.requestPermissions(MainActivity.this, "需要获取您的相册、照相使用权限", PERMISSIONS, permissions);
}
4.剩下的代码写在activity里面就好了
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//框架要求必须这么写
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
//成功打开权限
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "相关权限获取成功", Toast.LENGTH_SHORT).show();
}
//用户未同意权限
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Log.d("**", "onPermissionsDenied: 拒绝权限");
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this)
.setRationale("没有该权限,此应用程序可能无法正常工作。打开应用设置屏幕以修改应用权限")
.setTitle("必需权限")
.build()
.show();
}
}
本文详细介绍了在Android应用中如何正确地请求和处理相机及相关存储权限。从在AndroidManifest.xml中声明权限,到使用EasyPermissions库在运行时请求权限,再到处理权限请求结果,全程解析权限管理流程。

1375

被折叠的 条评论
为什么被折叠?



