在android中发送通知

时间:2014-09-10 09:59:42

标签: android notifications

我有一个应用,并希望每天在特定时间发送通知。 这是我的代码:

 AlarmManager am = (AlarmManager)getBaseContext().getSystemService(alarm);
    Intent intent = new Intent("WAKE_UP");
    PendingIntent sender = PendingIntent.getBroadcast(getBaseContext(), 0, intent, 0);

 time use AlarmManager.set().

    am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis() , AlarmManager.INTERVAL_DAY, sender);

    // Prepare intent which is triggered if the
    // notification is selected
    Intent intent2 = new Intent(this, NotificationReceiverActivity.class);
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent2, 0);

    // Build notification
    // Actions are just fake
    Notification noti = new Builder(this)
            .setContentTitle(" boghche " + "shake")
            .setContentText("Shake kon :/").setSmallIcon(R.drawable.icon)
            .setContentIntent(pIntent)
           .build();
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    // hide the notification after its selected
    noti.flags |= Notification.FLAG_AUTO_CANCEL;

    notificationManager.notify(0, noti);

但是我不能在特定的时间发送它。

1 个答案:

答案 0 :(得分:0)

  

首先将警报管理器设置如下

Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.HOUR_OF_DAY, 18);
 calendar.set(Calendar.MINUTE, 30);
 calendar.set(Calendar.SECOND, 0);
 Intent intent1 = new Intent(MainActivity.this, AlaramReceiver.class);
 PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
 AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE);
 am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
  

创建广播接收器类" AlaramReceiver"在这提高了   onReceive时的通知

public class AlaramReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        long when = System.currentTimeMillis();
        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);

        Intent notificationIntent = new Intent(context, EVentsPerform.class);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);


        Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
                context).setSmallIcon(R.drawable.applogo)
                .setContentTitle("Alaram Fired")
                .setContentText("Events To be PErformed").setSound(alarmSound)
                .setAutoCancel(true).setWhen(when)
                .setContentIntent(pendingIntent)
                .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000});
        notificationManager.notify(MID, mNotifyBuilder.build());
        MID++;

    }

}
  

在Manifest中,您可以为此

添加以下权限
<!-- permission required to use Alarm Manager -->
 <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>

 <!-- Register the Alarm Receiver -->
 <receiver android:name="com.example.alarammanagernotifcation.AlaramReceiver"/>