1

我正在开发一个 android 应用程序,其一个功能是将屏幕方向锁定为 Landscape,我想将此方向更改应用于手机中的所有 android 应用程序。我正在使用此代码

private void lockScreenOrientation() {
if (!mScreenOrientationLocked) {
    final int orientation = getResources().getConfiguration().orientation;
    final int rotation = getWindowManager().getDefaultDisplay().getOrientation();
    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
    }
    else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
        }
        else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
        }
    }

    mScreenOrientationLocked = true;
}
}

private void unlockScreenOrientation() {
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
 mScreenOrientationLocked = false;
}

但这是临时更改,不会对所有应用程序生效,有人知道将锁定方向应用于所有应用程序的方法吗?谢谢

4

1 回答 1

4

像您链接的应用程序通过修改与旋转相关的全局系统设置值来完成此操作。查看Settings.System类,了解应用程序可用的常量。具体来说,ACCELEROMETER_ROTATIONandUSER_ROTATION值可能会引起人们的兴趣。

您还需要在清单中声明权限android.permission.WRITE_SETTINGS以及可能的android.permission.WRITE_SECURE_SETTINGS权限。

于 2012-09-04T15:30:38.257 回答