Android小部件无法接收DATE_CHANGED消息

时间:2012-07-12 04:10:54

标签: android date android-intent widget

我正在开发一个日历小部件,当我更改日期手动时,我无法收到DATE_CHANGED消息。

有什么问题?

我在Manifest中的代码是:

<receiver android:name="com.widget.calendar.CalendarWidgetProvider">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        <action android:name="android.intent.action.DATE_CHANGED"/>
    </intent-filter>
    <!-- This specifies the widget provider info -->
    <meta-data android:name="android.appwidget.provider"
        android:resource="@xml/widgetinfo" />
</receiver>

我试图像这样接收它:

@Override
public void onReceive(Context ctx, Intent intent) {
    final String action = intent.getAction();
    if (action.equalsIgnoreCase("android.intent.action.DATE_CHANGED")) {
        Log.e(TAG, "Date changed.....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    }
    super.onReceive(ctx, intent);
}

但是当我手动更改系统日期时,不会打印日志。

谢谢!

更新

我用Intent.ACTION_TIME_CHANGED解决了这个问题,它确实是DATE_CHANGED的错误。

1 个答案:

答案 0 :(得分:7)

使用此意图:

 <intent-filter>
        <action android:name="android.intent.action.TIME_SET"/>
 </intent-filter>

并收到:

@Override
public void onReceive(Context ctx, Intent intent) {
    final String action = intent.getAction();
    if (action.equalsIgnoreCase("android.intent.action.TIME_SET")) {
        Log.e(TAG, "Date changed.....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    }
    super.onReceive(ctx, intent);
}