在Android应用程序中设置通知/警报

时间:2015-12-28 13:58:47

标签: android notifications

我正在为java教程构建一个简单的Android应用程序,其中我想保留一个稍后阅读选项,用户可以使用该选项安排时间进行阅读,并且在指定时间我的应用程序应该向用户发出通知。即使我的应用程序当时没有打开,他也应该在通知栏中收到通知。我是android的新手并且不知道如何做到这一点。有人可以帮帮我吗?作为ai是新手的详细解释可能会更有帮助。谢谢: - )

2 个答案:

答案 0 :(得分:7)

要安排延迟通知,

1)创建一个将收到活动的BroadcastReceiver

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //you might want to check what's inside the Intent
        if(intent.getStringExtra("myAction") != null &&
                intent.getStringExtra("myAction").equals("notify")){
            NotificationManager manager =
                    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                    .setSmallIcon(R.drawable.yourIcon)
                    //example for large icon
                    .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
                    .setContentTitle("my title")
                    .setContentText("my message")
                    .setOngoing(false)
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                    .setAutoCancel(true);
            Intent i = new Intent(context, YourTargetActivity.class);
            PendingIntent pendingIntent =
                    PendingIntent.getActivity(
                            context,
                            0,
                            i,
                            PendingIntent.FLAG_ONE_SHOT
                    );
            // example for blinking LED
            builder.setLights(0xFFb71c1c, 1000, 2000);
            builder.setSound(yourSoundUri);
            builder.setContentIntent(pendingIntent);
            manager.notify(12345, builder.build());
        }

    }
}

别忘了在Manifest中声明它:

       <receiver
        android:name="your.package.name.MyReceiver"
        android:exported="false" />

2)安排行动(假设你是从Activity执行):

   //will fire in 60 seconds
    long when = System.currentTimeMillis() + 60000L;

    AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, MyReceiver.class);
    intent.putExtra("myAction", "mDoNotify");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
    am.set(AlarmManager.RTC_WAKEUP, when, pendingIntent);

3)你已经完成了

//免责声明:没有编译代码,可能存在拼写错误。剩下的就是你的作业;)

答案 1 :(得分:2)

使用AlarmManager解决您的问题。收到警报后,您也可以发送通知。

请参阅android教程中的this示例应用程序,以实现警报。