android - Android 上的 EasyPermissions 不授予权限
问题描述
我正在使用EasyPermissions库在我的应用程序中授予一些权限。这是场景:
这是 logcat 初始化我的应用程序并按下按钮。
D/HomeActivity: He pulsado ringtoneMenuOpen
D/HomeActivity: onPermissionsDenied
D/HomeActivity: Hemos llegado aquí con permisos denegados y 'No volver a mostrar'
然后出现一个对话框(AppSettingsDialog),说明使用取消和接受按钮需要权限。我按接受并打开设置 APP 屏幕。我单击 Permissions Item 并启用它...我返回应用程序,Logcat 显示onPermissionGranted调试说明。我再次在按钮中单击运行时(进入铃声设置逻辑内部,因为我已授予权限)但我再次进入onPermissionsDenied 方法..
onPermissionsGranted He pulsado ringtoneMenuOpen
onPermissionsDenied Hemos llegado aquí con permisos denegados y 'No volver a mostrar'
这是我的班级结构(仅供参考)
public class Home implements EasyPermissions.PermissionCallbacks{
...
private String[] permission_sounds = {Manifest.permission.WRITE_SETTINGS, Manifest.permission.WRITE_EXTERNAL_STORAGE};
private int RC_permissionSounds = 500;
private Activity act;
..onCreate{
act = this;
}
//I assign this onClickListener to ringtoneButton
private View.OnClickListener ringtoneMenuOpen(){
Log.d(TAG, "ringtoneMenuOpen accedemos, tenemos que entrar ahora en solicitar permisos e intentar ");
soundButtonMode = SoundButtonMode.RIGNTONE;
return new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "He pulsado ringtoneMenuOpen"); //Line 1 Logcat
if (EasyPermissions.hasPermissions(act, permission_sounds)) {
new SetSoundAsRingtone(act).execute();
} else {
EasyPermissions.requestPermissions(act, act.getString(R.string.permission_rationale), RC_permissionSounds, permission_sounds);
}
}
};
}
...
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, act);
}
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "onPermissionsGranted");
buttonRingtone.performClick();
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "onPermissionsDenied");//Line 2 Logcat
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
Log.d(TAG, "Hemos llegado aquí con permisos denegados y 'No volver a mostrar'"); //Line 3 Logcat
new AppSettingsDialog.Builder(this).build().show();
}
}
...
解决方案
推荐阅读
- r - 涉及在异常值分析中提取行值而不是行号的问题
- javascript - Javascript ES6 递归函数
- javascript - React-Native ScrollView 仅适用于 react-native-paper 项目
- python - 如果 nan 在列表列表中,则删除列表
- javascript - 我似乎无法将一行异步添加到@angular/material:table 示意图的表格中
- node.js - TypeError: body is not iterable - RabbitMQ, Celery worker NodeJs,
- reactjs - 单击链接时如何关闭移动菜单以做出反应?
- python - ValueError: bad marshal 不能通过删除 .pyc 文件来解决?
- javascript - Redux 和 ReactJS Hooks:UseEffect 返回一个空状态
- html - 由于绝对位置和 z 索引,链接无法正常工作