2012-07-12 3 views
5

Sto sviluppando un widget di calendario e non posso ricevere il messaggio DATE_CHANGED quando ho cambiato la data MANUALMENTE.Il widget Android non può ricevere il messaggio DATE_CHANGED

Qual è il problema?

Il mio codice nel manifesto è:

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

E ho cercato di ricevere in questo modo:

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

Ma il registro non viene stampata quando cambio la data di sistema manualmente.

Grazie!

UPDATE:

Ho risolto questo con Intent.ACTION_TIME_CHANGED, è davvero un bug di DATE_CHANGED.

risposta

7

Utilizzare questo intento:

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

E ricevere:

@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

ma questo causerà consumare la batteria come sarà chiamare di nuovo e di nuovo la trasmissione ricevitore ogni volta che il tempo cambierà. – Akram

+1

@Akki Ho verificato che non invierà questo intento TIME_SET a meno che non modifichi manualmente l'ora o la data del sistema. Quindi la batteria è al sicuro qui. :) – herbertD

+0

quindi vuoi chiamare questo ricevitore quando l'utente cambia manualmente la data? – Akram