我开发了这样一个Android Widget:
<receiver android:name=".MyWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.intent.action.ACTION_SCREEN_ON" />
<action android:name="android.intent.action.ACTION_SCREEN_OFF" />
</intent-filter>
在我的小部件中
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
playNotification(context, true);
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
playNotification(context, true);
}
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
[...]
更新AppWidget完美运行。相反,如果屏幕已打开或关闭,通知都不起作用。这是怎么回事?
这是因为
Intent.ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF" // not ACTION_SCREEN_OFF
Intent.ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON" // not ACTION_SCREEN_ON
当您在清单中修复意图过滤器时,一切应该都可以正常工作。