2012-07-12 6 views
5

Je développe un widget de calendrier, et je ne peux pas recevoir le message DATE_CHANGED lorsque j'ai changé la date MANUELLEMENT.Le widget Android ne peut pas recevoir le message DATE_CHANGED

Quel est le problème?

Mon code 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> 

Et j'ai essayé de le recevoir comme ceci:

@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); 
} 

Mais le journal n'est pas imprimer lorsque je change la date du système manuellement.

Merci!

MISE À JOUR:

Je résolu ce problème avec Intent.ACTION_TIME_CHANGED, il est vraiment un bug de DATE_CHANGED.

Répondre

7

Utilisez cette intention:

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

et recevez:

@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

mais cela provoquera vider votre batterie car il appellera recepteur de diffusion à nouveau et à chaque fois que le temps va changer. – Akram

+1

@Akki J'ai testé qu'il n'enverra pas cette intention TIME_SET sauf si je change manuellement l'heure ou la date du système. Donc, la batterie est en sécurité ici :) – herbertD

+0

donc vous voulez appeler ce destinataire lorsque l'utilisateur change la date manuellement? – Akram

Questions connexes