I am writing the alarm code for my application, but it does not work
public class AlarmActivity extends BaseActivity implements View.OnClickListener { private Calendar mCalendar; private AlarmManager mAlarmManager; private Ringtone mRingtone; private PendingIntent mPendingIntent; private Intent mIntent; TimePicker mTimePicker; Handler myHandler = new Handler(); Thread myThread = new Thread(new Runnable() { @Override public void run() { myHandler.post(new Runnable() { @Override public void run() { mCalendar = Calendar.getInstance(); final int hour = mCalendar.get(Calendar.HOUR_OF_DAY); int minute = mCalendar.get(Calendar.MINUTE); mCalendar.set(Calendar.HOUR_OF_DAY, 17); mCalendar.set(Calendar.MINUTE, 13); mCalendar.set(Calendar.SECOND, 0); getReceiver(); } }); } }); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alarm); // убрал код на поиск вьюшек и установку слушателей getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); mIntent = new Intent(getApplicationContext(), AlarmReceiver.class); Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); mRingtone = RingtoneManager.getRingtone(getApplicationContext(), notification); mRingtone.play(); myThread.start(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnBeginSchedule: startActivity(new Intent(getApplicationContext(), PlayExerciseActivity.class)); mRingtone.stop(); break; case R.id.btnCancelSchedule: mRingtone.stop(); myThread.interrupt(); break; case R.id.btnDelaySchedule: mRingtone.stop(); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } mPendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, mIntent, PendingIntent.FLAG_UPDATE_CURRENT); mAlarmManager.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), mPendingIntent); AlarmActivity.this.finish(); break; } } public void getReceiver() { mPendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, mIntent, PendingIntent.FLAG_UPDATE_CURRENT); mAlarmManager.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), mPendingIntent); mAlarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), AlarmManager.INTERVAL_HALF_HOUR, mPendingIntent); } @Override public void onBackPressed() { myThread.interrupt(); } } public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Build.VERSION.SDK_INT >= 16) { Intent i = new Intent(context.getApplicationContext(), AlarmActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("fast", true); i.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); context.startActivity(i); Log.d("Receiver", "text"); } } } In the manifesto there is this
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.SET_ALARM" /> <receiver android:name=".ui.alarm.AlarmReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>