i'm creating notification alarm app and the notification not created

i create this app but it is not send a notification at the time choosen please can any one help me to solve this problem xml file:

  <?xml version="1.0" encoding="utf-8"?>    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:orientation="vertical"   android:gravity="center_horizontal"   tools:context=".MainActivity">   <EditText     android:id="@+id/editText"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:hint="Enter your task"     android:layout_marginBottom="20dp"/>  <TimePicker     android:id="@+id/timePicker"     android:layout_width="300dp"     android:layout_height="342dp"/>  <LinearLayout     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:gravity="center_horizontal"     android:layout_marginTop="30dp">     <Button         android:id="@+id/setBtn"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="set"         android:layout_marginRight="20dp"/>     <Button         android:id="@+id/cancelBtn"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="cancel"/> </LinearLayout> 

and this is the MainActivity class for app: package com.examble.alarmlast; import androidx.appcompat.app.AppCompatActivity;

import android.app.AlarmManager; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TimePicker; import android.widget.Toast;  import java.util.Calendar;  public class MainActivity extends AppCompatActivity { private AlarmManager alarmMgr; private PendingIntent alarmIntent; Button setbtn; TimePicker timePicker;  EditText edt;  @Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     setbtn = findViewById(R.id.setBtn);     edt=findViewById(R.id.editText);     timePicker=findViewById(R.id.timePicker);     final int hour = timePicker.getCurrentHour();     final int minute = timePicker.getCurrentMinute();     setbtn.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             //alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);             AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);              Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);             intent.putExtra("todo", edt.getText().toString());             alarmIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);           // Set the alarm to start at 8:30 a.m.             Calendar calendar = Calendar.getInstance();             calendar.setTimeInMillis(System.currentTimeMillis());             calendar.set(Calendar.HOUR_OF_DAY,hour );             calendar.set(Calendar.MINUTE, minute);             // setRepeating() lets you specify a precise custom interval--in this case,        // 20 minutes.                         alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 20,         alarmIntent);             Toast.makeText(MainActivity.this, "Done!", Toast.LENGTH_SHORT).show();         }     });        }      } 

and this is the AlarmReceiver class for app:

 package com.examble.alarmlast;  import android.app.Notification;  import android.app.NotificationChannel;  import android.app.NotificationManager;  import android.app.PendingIntent;  import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.os.Build;   import androidx.core.app.NotificationCompat;  import androidx.core.app.NotificationManagerCompat;   import static androidx.core.content.ContextCompat.getSystemService;   public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) {        String message = intent.getStringExtra("todo");      // When notification is tapped, call MainActivity.     Intent mainIntent = new Intent(context, MainActivity.class);     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);     PendingIntent contentIntent = PendingIntent.getActivity(context, 0, mainIntent, 0);     if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O)     {         NotificationChannel notificationChannel = new NotificationChannel("n","n",                 NotificationManager.IMPORTANCE_DEFAULT);         NotificationManager myNotificationManager =                 (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);          myNotificationManager.createNotificationChannel(notificationChannel);     }      // Prepare notification.     NotificationCompat.Builder builder = new NotificationCompat.Builder(context,"n")             .setContentText(message)             .setContentTitle("It's Time!")             .setSmallIcon(android.R.drawable.ic_dialog_info)             .setAutoCancel(true)             .setContentText(message)             .setWhen(System.currentTimeMillis())             .setContentIntent(contentIntent)             .setPriority(Notification.PRIORITY_MAX)             .setDefaults(Notification.DEFAULT_ALL);      // Notify     NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);     notificationManagerCompat.notify(999,builder.build());  } } 

AndroidManifast:

    <?xml version="1.0" encoding="utf-8"?>     <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.abeer.alarmlast">      <application     android:allowBackup="true"     android:icon="@mipmap/ic_launcher"     android:label="@string/app_name"     android:roundIcon="@mipmap/ic_launcher_round"     android:supportsRtl="true"     android:theme="@style/AppTheme">     <activity android:name=".MainActivity">         <intent-filter>             <action android:name="android.intent.action.MAIN" />              <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>     </activity>     <receiver android:name=".AlarmReceiver" /> </application>  </manifest> 
Asked on July 16, 2020 in Java.
Add Comment
1 Answer(s)

Receiver doesnt know when to invoke itself.

<receiver android:name=".AlarmReceiver">         <intent-filter>             <action android:name="android.intent.action.BOOT_COMPLETED" />         </intent-filter>     </receiver> 

You need to specify when to invoke it.

Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.