In my app even after user allowing modify system settings (write_settings) permission, the permission in real is not granting to my app.
User allowed allow modify settings:
but, when I went into settings > installed apps> my app > other permissions in order to check granted permissions, Modify system setting permission for my app is being denied.
I have added write settings permission in manifest file
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
and also I used the code to open settings intent
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();
}
It's working on other devices I have tested but not working in Xiaomi's MIUI devices. If possible please provide me with a work around. I desperately needed this permission as my app want to change ringtones. Answers in this link(Can't get WRITE_SETTINGS permission already implemented but not working in xiaomi devices