0

我已经开发了 android 小部件,我不想禁用我的小部件的旋转功能。所以它只会渲染纵向而不是横向模式。

我尝试了此代码,但它禁用了所有应用程序的旋转。我只是考虑我的小部件。

    public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled) {    
    Settings.System.putInt(resolver, Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}

我怎样才能做到?

谢谢

4

2 回答 2

1

您可以创建服务并将其注册到 CONFIGURATION_CHANGED 事件,如下所示

public class MyService extends Service {


@Override
public void onCreate() {
    super.onCreate();

    BroadcastReceiver bReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            refreshWidget();  // Code to refresh the widget
        }
    };

    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED);
    registerReceiver(bReceiver, intentFilter);
于 2012-04-25T08:10:03.073 回答
0

您可以accelerometer_rotation用于切换设备旋转:

String str = Settings.System.getString(paramContext.getContentResolver(), "accelerometer_rotation");
if (str.equals("0"))
      {
        Settings.System.putString(paramContext.getContentResolver(), "accelerometer_rotation", "1");
      }
if (!str.equals("1"))
      Settings.System.putString(paramContext.getContentResolver(), "accelerometer_rotation", "0");
}

在 manifest.xml 中:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
于 2012-04-25T08:15:23.397 回答