Je possède ce code:Pour obtenir des données de calendrier dans OnDestroy ou OnPause
namespace TestB
{
[Activity(Label = "TestB", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
Java.Util.Calendar calendar;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button button = FindViewById<Button>(Resource.Id.MyButton);
try
{
calendar = Java.Util.Calendar.Instance;
calendar.TimeInMillis = Java.Lang.JavaSystem.CurrentTimeMillis();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message.ToString(), ToastLength.Short).Show();
}
}
protected override void OnDestroy()
{
base.OnDestroy();
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == 13 && calendar.Get(Java.Util.CalendarField.Minute) == 33)
Toast.MakeText(this, calendar.Get(Java.Util.CalendarField.HourOfDay).ToString() + " " + calendar.Get(Java.Util.CalendarField.Minute).ToString(), ToastLength.Short).Show();
}
protected override void OnPause()
{
base.OnPause();
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == 13 && calendar.Get(Java.Util.CalendarField.Minute) == 33)
Toast.MakeText(this, calendar.Get(Java.Util.CalendarField.HourOfDay).ToString() + " " + calendar.Get(Java.Util.CalendarField.Minute).ToString(), ToastLength.Short).Show();
}
Lorsque vient le temps de 13 et 33 minutes, le message ne sera pas publié. Je veux appeler le alarmManager
de cette manière. Je veux avoir calendar.Set(Java.Util.CalendarField.HourOfDay, 13)
et calendar.Set(Java.Util.CalendarField.Minute, 33)
et d'appeler alarmManager
de cette façon.
EDIT 1:
J'édité ce code:
System.Timers.Timer t;
if (t == null)
{
t = new System.Timers.Timer();
//t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
//t.Elapsed += (sender, args) => FireTheMissiles();
t.Elapsed += new System.Timers.ElapsedEventHandler(OnTimeEvent);
t.Interval = 1000;
t.Enabled = true;
}
t.Start();
protected override void OnStop()
{
base.OnStop();
flag = 3;
}
private void OnTimeEvent(object source, ElapsedEventArgs e)
{
h = DateTime.Now.Hour;
m = DateTime.Now.Minute;
RunOnUiThread(delegate
{
if (flag == 3)
{
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == h && calendar.Get(Java.Util.CalendarField.Minute) == m)
Toast.MakeText(this, "3 " + calendar.Get(Java.Util.CalendarField.HourOfDay).ToString() + " " + calendar.Get(Java.Util.CalendarField.Minute).ToString(), ToastLength.Short).Show();
}
});
}
J'ai demandé à mes amis de mettre en œuvre ce projet sur une autre application et voir si un message apparaît si l'application n'a pas ouvert pendant 24 heures , mais aucun message n'apparaîtra.
EDIT 2:
J'ai utilisé votre code.
J'ai également utilisé la minuterie.
J'ai enregistré les informations comme l'heure et la date d'installation dans la base de données.
Je voulais que l'alarme apparaisse par heure et date.
Mais après plusieurs tentatives, je n'ai reçu aucun message d'alerte.
private void OnTimeEvent(object source, ElapsedEventArgs e)
{
RunOnUiThread(delegate
{
if (flag == 1)
{
}
int h = DateTime.Now.Hour;
int m = DateTime.Now.Minute;
DateTime today = DateTime.Today;
dc = today.AddDays(1).Day;
mc = today.AddDays(1).Month;
yc = today.AddDays(1).Year;
var data = mydb.Table<DatB>();
var data1 = data.Where(x => x.DWSeen == dc).Where(x => x.MWSeen == mc).FirstOrDefault();
if (flag == 3 && data1 != null && data1.RFSeen == 0)
{
startAlertAtParticularTime(data1.HourSeen, data1.MinuteSeen, "-1");
if (calendar.Get(Java.Util.CalendarField.HourOfDay) == h && calendar.Get(Java.Util.CalendarField.Minute) == m && calendar.Get(Java.Util.CalendarField.DayOfMonth) == dc && calendar.Get(Java.Util.CalendarField.Month) == mc && calendar.Get(Java.Util.CalendarField.Year) == yc && data1.RFSeen == 0)
{
startAlertAtParticularTime(data1.HourSeen, data1.MinuteSeen, data1.RFSeen.ToString());
}
}
});
}
« -1 » signifie que l'alarme n'apparaîtra
« 0 » signifie que l'alarme apparaît
namespace TestB
{
[BroadcastReceiver(Enabled = true)]
public class MyBR: BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
string dataSeenResult = intent.GetStringExtra("dataSeen");
if ((MyApp.isActivityVisible() == "Stopped" || MyApp.isActivityVisible() == "Destroyed") && dataSeenResult == "0")
{
Toast.MakeText(context, MyApp.isActivityVisible().ToString(), ToastLength.Short).Show();
}
}
}
}
Ne sais pas ce que vous voulez faire, voulez-vous définir une alarme avec l'heure 13:33 de votre application? –
Oui Je veux que l'application à l'alerte à un moment donné pendant la fermeture – arz
Avez-vous vérifié ma réponse, une mise à jour? –