2012-07-12 23 views
5

カレンダーウィジェットを開発中です。日付を変更したときにDATE_CHANGEDメッセージを受け取ることができません。MANUALLYAndroidウィジェットが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); 
} 

しかし、私は手動でシステムの日付を変更するとログが印刷されていません。

ありがとうございます!

UPDATE:

私はそれが本当にDATE_CHANGEDのバグです、Intent.ACTION_TIME_CHANGEDでこれを解決しました。

答えて

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); 
} 
+0

が、これは時間が変更されるたび、それが何度も何度も、ブロードキャストレシーバを呼び出しますよう、あなたのバッテリーを消耗原因となります。 – Akram

+1

@Akki私は、システムの時刻または日付を手動で変更しない限り、このTIME_SETインテントを送信しないことをテストしました。バッテリーはここで安全です:) – herbertD

+0

このレシーバーは、ユーザーが手動で日付を変更したときに呼び出すことができますか? – Akram

関連する問題