启用和禁用自动旋转编程?

有很多很酷的小工具,将启用和禁用您的手机上的自动旋转。 禁用它将closures手机上的所有应用程序。

任何想法如何完成它?

Solutions Collecting From Web of "启用和禁用自动旋转编程?"

这应该为你做的伎俩:

import android.provider.Settings; public static void setAutoOrientationEnabled(Context context, boolean enabled) { Settings.System.putInt( context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0); } 

将权限添加到AndroidManifest.xml

 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

你可以在这里find文档

始终使用用户指定的屏幕方向,这将适用于用户select的任何方向,如果其禁用,则不会旋转屏幕。

 activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); 

您必须使用onCreate()函数中的以下代码修复它。 加工…

 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

这是我对这个问题的责任。 我必须实现一个button,它具有与设置菜单中的lockingbutton相同的function。

你可以使用setRotationScreenFromSettings来解决你的问题

 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); }` 

将权限添加到AndroidManifest.xml

 <uses-permission android:name="android.permission.WRITE_SETTINGS" />