我在用
容易出错
库授予我的应用程序中的某些权限。这是一个场景:
这是logcat初始化我的应用程序并按下按钮。
D/HomeActivity: He pulsado ringtoneMenuOpen
D/HomeActivity: onPermissionsDenied
D/HomeActivity: Hemos llegado aquà con permisos denegados y 'No volver a mostrar'
然后出现一个对话框(
应用程序设置对话框
)有必要使用“取消”和“接受”按钮解释权限。我按下“接受”键
设置应用程序屏幕打开
.我点击权限项并
它被启用了
... 我返回应用程序,Logcat显示给我看
未经许可
调试说明。我再次在运行时点击按钮(进入铃声设置逻辑,因为我已被授予权限),但我再次进入
未经许可
mehod。。
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;
}
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");
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");
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
Log.d(TAG, "Hemos llegado aquà con permisos denegados y 'No volver a mostrar'");
new AppSettingsDialog.Builder(this).build().show();
}
}
...