How can I listen to Intent.ACTION
I have developed a widget that has an ImageButton
that toggles the Auto-Rotate setting. Everything works fine and the setting toggles when the button is pressed. The problem is that I do not know how to listed to Intent.ACTION_CONFIGURATION_CHANGED
in order for the button to change it's state if the setting is enabled/disabled from other sources than my widget.
I have gone through the documentation and I know that I can't register the intent-filter action android.intent.action.CONFIGURATION_CHANGED
in the Manifest and this intent-filter must be registered dynamically using Context.registerReceiver (BroadcastReceiver receiver, IntentFilter filter)
.
I have tried creating a new class that extends BroadcastReceiver
and then registering the receiver in the onUpdate()
method, but it does not work.
Here is the code I've tried:
The BroadcastReceiver class:
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);
}
}
}
And here is the AppWidgetProvider class:
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);
}
The ConfigurationIntentReceiver
component has not been declared in the Manifest as per Android's documentation.
If anyone can point me in the right direction, I would really appreciate it.
链接地址: http://www.djcxy.com/p/50586.html上一篇: 小部件导致“应用程序未安装”错误
下一篇: 我如何收听Intent.ACTION