【问题标题】:Show android notification every five minutes每五分钟显示一次安卓通知
【发布时间】:2011-08-18 03:39:39
【问题描述】:

我想知道如何设置通知时间。我想每五分钟设置一次通知, 所以帮我做吧。

public class FirstActivity extends Activity
{
    private static final int HELLO_ID = 1;
    //public static final int FLAG_AUTO_CANCEL = 0;`enter code here`
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.firstactivity);

        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

        int icon = R.drawable.icon;
        CharSequence tickerText = "Hello";
        long when = System.currentTimeMillis();

        Notification notification = new Notification(icon, tickerText, when);

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.statusbarnotification);
        contentView.setImageViewResource(R.id.image, R.drawable.icon);
        contentView.setTextViewText(R.id.text, "Hello, this message is in a custom expanded view");
        notification.contentView = contentView;
        notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL;
        Intent notificationIntent = new Intent(getApplicationContext(), SecondActivity.class);
        //PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        notification.contentIntent = contentIntent;
        mNotificationManager.notify(HELLO_ID, notification);
    }

}

【问题讨论】:

    标签: android notifications


    【解决方案1】:

    我认为最好的方法是创建一个设置通知的服务,然后使用 AlarmManager 激活该服务。
    这是 AlarmManager 的代码:

    private void startAlarm() {
        AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE);
        long when = System.currentTimeMillis();         // notification time
        Intent intent = new Intent(this, ReminderService.class);
        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
        alarmManager.setRepeating(AlarmManager.RTC, when, (AlarmManager.INTERVAL_FIFTEEN_MINUTES / 3), pendingIntent);
    }
    

    要控制间隔,请使用常量值或插入您自己的值(以毫秒为单位)。

    这里是服务:

    public class ReminderService extends IntentService {
        private static final int NOTIF_ID = 1;
    
        public ReminderService(){
            super("ReminderService");
        }
    
        @Override
          protected void onHandleIntent(Intent intent) {
            NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            long when = System.currentTimeMillis();         // notification time
            Notification notification = new Notification(R.drawable.icon, "reminder", when);
            notification.defaults |= Notification.DEFAULT_SOUND;
            notification.flags |= notification.FLAG_AUTO_CANCEL;
            Intent notificationIntent = new Intent(this, YourActivity.class);
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent , 0);
            notification.setLatestEventInfo(getApplicationContext(), "It's about time", "You should open the app now", contentIntent);
            nm.notify(NOTIF_ID, notification);
        }
    
    }
    

    【讨论】:

    • 谢谢是我想要的,但我有一个关于这个的问题。如何在服务类中设置AlarmManager,以便在它检查数据库并有新内容时显示通知? (如果能用代码解释就更好了,不需要数据库的代码……只有Service Class里面的AlarmManager加上if语句)
    • StartAlarm() 打来电话??我没有收到任何通知.. 代码不起作用 g:(
    猜你喜欢
    • 2020-11-17
    • 2018-06-12
    • 2011-12-22
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多