gpt4 book ai didi

android - 如何检测主屏幕小部件的方向变化?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:59:07 25 4
gpt4 key购买 nike

我正在编写主屏幕小部件,并希望在设备方向从纵向变为横向或其他方式时更新主屏幕小部件。我怎样才能做到?

目前,我尝试像下面的代码一样注册到 CONFIGURATION_CHANGED 操作,但 Android 不允许我这样做,它说“不允许 IntentReceiver 组件注册以接收 Intent ”。有人能帮我吗?谢谢。

public class MyWidget extends AppWidgetProvider {

@Override
public void onEnabled(Context context) {
super.onEnabled(context);
this.registerReceiver(this, new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED));
}

最佳答案

我知道这是一个老问题,但确实有比将更新委托(delegate)给 IntentService 更简单的方法。处理方向变化的方法是监听应用程序中的配置变化并向小部件广播 ACTION_APPWIDGET_UPDATE。

向您的应用添加应用程序类

public class MyApplication extends Application {

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

// create intent to update all instances of the widget
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null, this, MyWidget.class);

// retrieve all appWidgetIds for the widget & put it into the Intent
AppWidgetManager appWidgetMgr = AppWidgetManager.getInstance(this);
ComponentName cm = new ComponentName(this, MyWidget.class);
int[] appWidgetIds = appWidgetMgr.getAppWidgetIds(cm);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

// update the widget
sendBroadcast(intent);
}
}

只要发生配置更改,就会调用该方法,其中之一是方向更改。您可以通过仅在方向改变时进行广播来改进方法,而不是例如系统语言的改变。该方法基本上向您的小部件的所有实例发送更新广播。

在 list 中定义 MyApplication

<application
android:name="yourpackagename.MyApplication"
android:description="@string/app_name"
android:label="@string/app_name"
android:icon="@drawable/app_icon">

<!-- here go your Activity definitions -->

</application>

关于android - 如何检测主屏幕小部件的方向变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com