Я делаю приложение для Android ... и я пытаюсь написать код для ежедневного набора уведомлений в течение определенного времени суток. Сначала я действительно думал, что это будет непростая задача, почти каждое приложение в игровом магазине имеет временное уведомление. Но после поиска снова и снова, все методы и учебники Youtube, которые я нашел, не работали для меня. Проблема, вероятно, во мне, но я не знаю, что это такое. Все, что мне нужно, это простой, элегантный, простой для понимания метод (если есть такая вещь). Любая помощь будет принята с благодарностью.Android-приложение с ежедневным уведомлением
Все поиски я сделал попадающая мне это далеко ... но все-таки без удачи:
Этот метод в моем классе MainActivity и называется только первый раз, когда приложение запускается для установки сигнализация ...
private void alarmMethod() {
Intent myIntent = new Intent(this, NotifyService.class);
AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
pendingIntent = PendingIntent.getService(this, 0, myIntent, 0);
// Set the alarm to start at approximately 2:00 p.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);
// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);
Toast.makeText(MainActivity.this, "Start Alarm", Toast.LENGTH_LONG)
.show();
Это мой NotifyService класс:
package com.OHS.example;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
public class NotifyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationManager mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Intent intent1 = new Intent(this.getApplicationContext(), MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification mNotify = new NotificationCompat.Builder(this)
.setContentTitle("Title")
.setContentText("Hello World!")
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent)
.setSound(sound)
.build();
mNM.notify(1, mNotify);
}
}
Это абсолютно блестяще ... Я не могу начать описывать, насколько я благодарен. Все это время я пытался начать другое мероприятие, которое отвечает за показ уведомления, и это вызывает проблемы. Я никогда не знал, что могу сделать тот же класс, что и alarmManager, и показать уведомление. Ваше решение элегантно и очень полезно. Спасибо. – OHS
У меня есть одна проблема, хотя .... После того, как будильник был установлен, если я полностью завершу приложение (из окна многозадачности), сигнал тревоги не погаснет, и я не получаю уведомление. Я даже попытался удалить метод 'onDestroy()', но это не помогло. Любые идеи, как я могу сделать будильник, даже если приложение в настоящее время не запущено? – OHS
Насколько я понимаю вашу проблему выше, не удаляйте метод onDestroy(), комментируйте только метод unregisterReceiver(). это будет сделано. – Trideep