2012-07-12 37 views
5

Tôi đang phát triển tiện ích con lịch và tôi không thể nhận được thông báo DATE_CHANGED khi tôi thay đổi ngày MANUALLY.Tiện ích Android không thể nhận được thông báo DATE_CHANGED

Sự cố là gì?

Mã của tôi trong Manifest là:

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

Và tôi đã cố gắng để đón nhận nó như thế này:

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

Nhưng nhật ký không được in khi tôi thay đổi ngày hệ thống bằng tay.

Cảm ơn!

UPDATE:

tôi giải quyết này với Intent.ACTION_TIME_CHANGED, Đó là thực sự là một lỗi của DATE_CHANGED.

Trả lời

7

Sử dụng mục đích này:

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

Và nhận:

@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

nhưng điều này sẽ gây hao pin của bạn vì nó sẽ gọi phát sóng reciever một lần nữa và một lần nữa bất cứ khi nào thời gian sẽ thay đổi. – Akram

+1

@Akki Tôi đã thử nghiệm rằng nó sẽ không gửi ý định TIME_SET này trừ khi tôi thay đổi thời gian hoặc Ngày của hệ thống theo cách thủ công. Vì vậy, pin là an toàn ở đây. :) – herbertD

+0

vì vậy bạn muốn gọi người nhận này khi người dùng thay đổi ngày bằng tay? – Akram

Các vấn đề liên quan