6

カレンダーウィジェットを開発していますが、手動で日付を変更したときにDATE_CHANGEDメッセージを受信できませ

何が問題ですか?

マニフェストの私のコードは:

<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のバグです。

4

1 に答える 1

8

このインテントを使用します。

 <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);
}
于 2012-07-12T07:50:40.867 に答える