2012-08-31 10 views
9

Tôi đã giới thiệu nhiều trang web nhưng tôi vẫn không thể tạo thông báo (lời nhắc hoặc báo thức) Tôi không biết chính xác cách tạo và làm việc với nó. của nó để thông báo/nhắc nhở người dùng về nhiệm vụ và cũng có thể cung cấp lời khuyên hàng ngày cho người sử dụng .. tôi sẽ vui mừng khi có sự giúp đỡ của bạn khi làm như vậy và làm thế nào để mã hóa nó quá ...Cách tạo Thông báo nhắc nhở

Trân :) Thanxs cho sự giúp đỡ của bạn trước.

+0

bạn muốn có [Thông báo] (http://developer.android.com/guide/topics/ui/notifiers/notifications.html) hoặc [Báo thức] (http://developer.android.com/reference/ android/app/AlarmManager.html)? Hãy cụ thể – iTurki

+1

[Câu trả lời] của tôi (http://stackoverflow.com/a/12189105/996493) có thể giúp bạn trong yêu cầu của bạn. – Lucifer

+0

@iturki: Tôi muốn mã hóa cho cả hai .. – Rushabh

Trả lời

33

Bạn cần hai điều:

  • AlarmManager: lịch trình thông báo tại một căn cứ thường xuyên (hàng ngày, hàng tuần, ..).
  • Dịch vụ: để khởi chạy thông báo khi AlarmManager tắt.

Dưới đây là một ví dụ cơ bản:

Trong hoạt động của bạn:

Intent myIntent = new Intent(this , NotifyService.class);  
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
PendingIntent pendingIntent = PendingIntent.getService(this, 0, myIntent, 0); 

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.SECOND, 0); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.HOUR, 0); 
calendar.set(Calendar.AM_PM, Calendar.AM); 
calendar.add(Calendar.DAY_OF_MONTH, 1); 

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*60*24 , pendingIntent); 

này sẽ kích hoạt báo động mỗi ngày vào lúc nửa đêm (00:00). Bạn có thể thay đổi điều đó nếu bạn muốn.

Bây giờ, tạo ra một dịch vụ NotifyService và đặt mã này trong onCreate() của nó:

@Override 
public void onCreate() { 
    NotificationManager mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.notification_icon, "Notify Alarm strart", System.currentTimeMillis()); 
    Intent myIntent = new Intent(this , MyActivity.class);  
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 
    notification.setLatestEventInfo(this, "Notify label", "Notify text", contentIntent); 
    mNM.notify(NOTIFICATION, notification); 
} 

Và đoạn mã này sẽ hiển thị các thông báo khi báo động được nhận.

Chúc may mắn!

+0

Tôi có cần một lớp dịch vụ không? – Behnam

+1

bạn có thể vui lòng chia sẻ một ví dụ? – Behnam

+0

nhưng nếu ứng dụng của tôi là "Đóng quân" thì Dịch vụ không hoạt động !!!! – javadaskari

3

đây là một số ít YouTube Video Tutorial về thông báo hàng ngày. Bạn có thể tìm thấy mã nguồn trong phần mô tả.

Video này không do chính tôi tạo. Nhưng tôi nghĩ đó là một sự giúp đỡ nhanh chóng. Mặc dù tôi đề nghị một số thay đổi vì Notification.Builder bị phản đối:

1.

import android.support.v4.app.NotificationCompat; 

2.

// Change: Notification mNotify = new Notification.Builder(this) to 
Notification mNotify = new NotificationCompat.Builder(this) 

Have Fun!