В моем приложении даже после того, как пользователь разрешил изменять системные настройки (write_settings), разрешение в реальном времени не дает моему приложению.
Пользователь может разрешить изменять настройки:
но, когда я вошел в настройки> установленные приложения> мое приложение> другие разрешения для проверки предоставленных разрешений, разрешение на изменение настроек системы для моего приложения отклоняется.
Я добавил разрешение на запись в файле манифеста
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
а также я использовал код, чтобы открыть настройки намерений
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
boolean settingsCanWrite = Settings.System.canWrite(getContext());
if(!settingsCanWrite){
showWriteSettingsDialog();
}
}
private void showWriteSettingsDialog(){
final Dialog dialog = new Dialog(getContext());
LottieAnimationView animation_view = dialog.findViewById(R.id.animation_view);
dialog.setContentView(R.layout.write_settings_dialog);
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
button = dialog.findViewById(R.id.write_settings_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getContext().getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent,CODE_WRITE_SETTINGS_PERMISSION);
}
});
dialog.show();
}
Он работает на других устройствах, которые я тестировал, но не работает в устройствах Xiaomi MIUI. Если возможно, пожалуйста, предоставьте мне работу. Я отчаянно нуждался в этом разрешении, так как мое приложение хочет менять мелодии звонка.
Ответы в этой ссылке ( Не удается получить разрешение WRITE_SETTINGS уже реализовано, но не работает на устройствах xiaomi