gpt4 book ai didi

android - 如何在小部件中收听 Intent.ACTION_CONFIGURATION_CHANGED 广播?

转载 作者:太空狗 更新时间:2023-10-29 15:06:01 25 4
gpt4 key购买 nike

我开发了一个小部件,它有一个 ImageButton 可以切换自动旋转设置。一切正常,按下按钮时设置会切换。问题是我不知道如何列出 Intent.ACTION_CONFIGURATION_CHANGED 以便在从我的小部件以外的其他来源启用/禁用设置时按钮更改其状态。

我已经阅读了文档,我知道我无法在 list 中注册 intent-filter 操作 android.intent.action.CONFIGURATION_CHANGED 并且必须使用动态注册此 intent-filter Context.registerReceiver(BroadcastReceiver 接收器,IntentFilter 过滤器)

我尝试创建一个扩展 BroadcastReceiver 的新类,然后在 onUpdate() 方法中注册接收器,但它不起作用。

这是我试过的代码:

BroadcastReceiver 类:

public class ConfigurationIntentReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
if(intent.getAction().equals("android.intent.action.CONFIGURATION_CHANGED")){
if (android.provider.Settings.System.getInt(context.getContentResolver(),Settings.System.ACCELEROMETER_ROTATION, 0) == 1){
remoteViews.setImageViewResource(R.id.widget_autorotate, R.drawable.ic_widget_autorotate_on);
} else {
remoteViews.setImageViewResource(R.id.widget_autorotate, R.drawable.ic_widget_autorotate_off);
}
WidgetProvider.pushWidgetUpdate(context.getApplicationContext(), remoteViews);

}
}
}

这是 AppWidgetProvider 类:

public class WidgetProvider extends AppWidgetProvider {



@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {

context.getApplicationContext().registerReceiver(new ConfigurationIntentReceiver(), new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED));
pushWidgetUpdate(context, remoteViews);
}

根据 Android 的文档,ConfigurationIntentReceiver 组件尚未在 list 中声明。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

您只能注册到这样的 Intent ,因此您必须通过前台服务(或 Activity,但那些死了,并且您不希望小部件停止获取它)来完成。

https://developer.android.com/reference/android/content/Intent.html#ACTION_CONFIGURATION_CHANGED

关于android - 如何在小部件中收听 Intent.ACTION_CONFIGURATION_CHANGED 广播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959022/

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