title: Android notification app not working properly
body: <p>I'm developing an android app, and part of it involves a notification that reminds the user to do something. This notification at a specified time and repeats every 12 hours. I'm using <code>AlarmManager</code> to schedule the alarm and I've also included the code to start my Alarm Service when the device boots. Here are my java classes:  </p>
  
  <p>MainActivity.java  </p>
  
  <pre><code>public class MainActivity extends Activity {
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      // TODO Auto-generated method stub
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
      SharedPreferences preferences = PreferenceManager
              .getDefaultSharedPreferences(this);
      SharedPreferences.Editor editor = preferences.edit();
      int i = preferences.getInt("numberoflaunches", 1);
  
      if (i &lt; 2) {
          alarmMethod();
          i++;
          editor.putInt("numberoflaunches", i);
          editor.commit();
      }
  }
  
  private void alarmMethod() {
  
      Intent intent = new Intent(this, AlarmService.class);
      this.startService(intent);
  
      Toast.makeText(MainActivity.this, "Alarm Set", Toast.LENGTH_SHORT).show();
  
  }
  
  }  
  </code></pre>
  
  <p>AlarmService.java</p>
  
  <pre><code>public class AlarmService extends Service {
  
  //used for register alarm manager
  PendingIntent pendingIntent;
  //used to store running alarm manager instance
  AlarmManager alarmMgr;
  //Callback function for alarm manager event
  BroadcastReceiver mReceiver;
  
  private static final String TAG = "MyService";
  
  @Override
  public IBinder onBind(Intent intent) {
      return null;
  }
  
  @Override
  public void onCreate() {
      super.onCreate();
  
      //Register AlarmManager Broadcast receive.
      RegisterAlarmBroadcast();
  }
  
  @Override
  public void onStart(Intent intent, int startid) {
  
      Calendar calendar = Calendar.getInstance();
      calendar.set(Calendar.SECOND, 0);
      calendar.set(Calendar.MINUTE, 30);
      calendar.set(Calendar.HOUR_OF_DAY, 6);
  
      alarmMgr.cancel(pendingIntent);
      alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
              calendar.getTimeInMillis(), 1000 * 60 * 60 * 12, pendingIntent);
  
  }
  
  private void showNotification() {
  
      Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
      Notification notification = new NotificationCompat.Builder(this)
              .setContentTitle("app_name")
              .setContentText("something")
              .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT))
              .setSound(soundUri)
              .setSmallIcon(R.drawable.notification_icon)
              .setAutoCancel(true)
              .setOnlyAlertOnce(true)
              .build();
  
      NotificationManagerCompat.from(this).notify(0, notification);
  
  }
  
  private void RegisterAlarmBroadcast() {
      Log.i("RegisterAlarmBroadcast", "Register Intent.RegisterAlarmBroadcast");
  
      //This is the call back function(BroadcastReceiver) which will be called when your alarm time is reached.
      mReceiver = new BroadcastReceiver() {
          private static final String TAG = "Alarm Example Receiver";
  
          @Override
          public void onReceive(Context context, Intent intent) {
              Log.i(TAG, "BroadcastReceiver::OnReceive() &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;");
              showNotification();
          }
      };
  
      //Register the alarm broadcast here
      registerReceiver(mReceiver, new IntentFilter("com.example.application.myNotification"));
      pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.example.application.myNotification"), 0);
      alarmMgr = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
  }
  
  public void onDestroy() {
      super.onDestroy();
      Log.d(TAG, "onDestroy");
  }
  
  }
  </code></pre>
  
  <p>autostart.java  </p>
  
  <pre><code>public class autostart extends BroadcastReceiver {
  
  @Override
  public void onReceive(Context arg0, Intent arg1)
  {
      Intent intent = new Intent(arg0,AlarmService.class);
      arg0.startService(intent);
      Log.i("Autostart", "started");
  }
  }
  </code></pre>
  
  <p>AndroidManifest.xml  </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.application" &gt;
  
  &lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /&gt;
  
  &lt;application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" &gt;
      &lt;activity
          android:name=".MainActivity"
          android:label="@string/app_name" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.MAIN" /&gt;
  
              &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
      &lt;receiver android:name=".autostart"&gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.BOOT_COMPLETED" /&gt;
          &lt;/intent-filter&gt;
      &lt;/receiver&gt;
      &lt;service
          android:name=".AlarmService"
          android:enabled="true" /&gt;
  &lt;/application&gt;
  </code></pre>
  
  <p></p>
  
  <p>However I must have done something wrong as it is not working properly. My problems are:<br>
  1. When I exit the app, the notification for some reason goes off, whatever the time is.<br>
  2.  When I reboot, the notification goes off, whatever the time is.</p>
  
  <p>I don't know if these problems are in any way related, maybe I have a piece of code that's messing everything up. But either way I would really appreciate any sort of help I can get. Thanks in advance.</p>