Esta es mi impetración para este problema. Tuve que implementar un botón que tenía la misma función que el botón de bloqueo en el menú de configuración.
puede utilizar las setRotationScreenFromSettings para resolver su problema
public static boolean getRotationScreenFromSettingsIsEnabled(Context context)
{
int result = 0;
try
{
result = Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION);
}
catch (Settings.SettingNotFoundException e)
{
e.printStackTrace();
}
return result == 1;
}
public static void setRotationScreenFromSettings(Context context, boolean enabled)
{
try
{
if (Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION) == 1)
{
Display defaultDisplay = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Settings.System.putInt(context.getContentResolver(), Settings.System.USER_ROTATION, defaultDisplay.getRotation());
Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0);
}
else
{
Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1);
}
Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}
catch (Settings.SettingNotFoundException e)
{
e.printStackTrace();
}
}
private void regirsterLockScreenOrientationChangedListner()
{
ContentObserver rotationObserver = new ContentObserver(new Handler())
{
@Override
public void onChange(boolean selfChange)
{
refreshLockScreenOrientationBtn();
}
};
context.getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION),
true, rotationObserver);
}`
Agregar permiso al AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
Esto parece funcionar, pero te bloquea, me bloquea la orientación del paisaje, incluso si estoy en retrato. Estoy probando en una tableta de nido de abeja, así que no estoy seguro de si hay alguna diferencia ... ¿Es este el comportamiento esperado? – christoff
¿Se puede hacer comprar solo la configuración, sin el permiso? Estoy tratando de encontrar una respuesta para este https://stackoverflow.com/questions/44196296/application-enables-orientation-change-button-is-status-bar. –