public void SetReminder(int hour, int min, string title, string content) { _title = title; _content = content; var calendar = Calendar.GetInstance(Locale.Default); var setCalendar = Calendar.GetInstance(Locale.Default); setCalendar.Set(CalendarField.HourOfDay, hour); setCalendar.Set(CalendarField.Minute, min); setCalendar.Set(CalendarField.Second, 0); CancelReminder(); if (setCalendar.Before(calendar)) { setCalendar.Add(CalendarField.Date, 1); } var alarmReceiver = new AlarmReceiver(title, content); var componentName = new ComponentName(Application.Context, alarmReceiver.Class); var packageManager = Application.Context.PackageManager; packageManager.SetComponentEnabledSetting(componentName, ComponentEnabledState.Enabled, ComponentEnableOption.DontKillApp); var intent = new Intent(Application.Context, alarmReceiver.Class); intent.PutExtra(TitleKey, title); intent.PutExtra(MessageKey, content); var pendingIntent = PendingIntent.GetBroadcast(Application.Context, DAILY_REMINDER_REQUEST_CODE, intent, PendingIntentFlags.UpdateCurrent); var alarmManager = (AlarmManager)Application.Context.GetSystemService(Context.AlarmService); alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, setCalendar.TimeInMillis, AlarmManager.IntervalDay, pendingIntent); }
public void CreateKeyPair() { DeleteKey(); KeyPairGenerator keyGenerator = KeyPairGenerator.GetInstance(KeyProperties.KeyAlgorithmRsa, KEYSTORE_NAME); if (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBeanMr2 && Build.VERSION.SdkInt <= BuildVersionCodes.LollipopMr1) { var calendar = Calendar.GetInstance(_context.Resources.Configuration.Locale); var endDate = Calendar.GetInstance(_context.Resources.Configuration.Locale); endDate.Add(CalendarField.Year, 20); //this API is obsolete after Android M, but I am supporting Android L, so I need this #pragma warning disable 618 var builder = new KeyPairGeneratorSpec.Builder(_context) #pragma warning restore 618 .SetAlias(_keyName).SetSerialNumber(BigInteger.One) .SetSubject(new X500Principal($"CN={_keyName} CA Certificate")) .SetStartDate(calendar.Time) .SetEndDate(endDate.Time).SetKeySize(KeySize); keyGenerator.Initialize(builder.Build()); } else if (Build.VERSION.SdkInt >= BuildVersionCodes.M) { var builder = new KeyGenParameterSpec.Builder(_keyName, KeyStorePurpose.Encrypt | KeyStorePurpose.Decrypt) .SetBlockModes(KeyProperties.BlockModeEcb) .SetEncryptionPaddings(KeyProperties.EncryptionPaddingRsaPkcs1) .SetRandomizedEncryptionRequired(false).SetKeySize(KeySize); keyGenerator.Initialize(builder.Build()); } keyGenerator.GenerateKeyPair(); }