javaandroidalarmandroid-alarmsalarms

Application alarm causing a weird error until I press the back button


I have an alarm in my application that notifies me every 10 minutes. It works fine but each time when the alarm notifies me, my application name will show as a box in the middle of the screen, and I can't press anything until I press the back button. It's really weird!

Here is my code:

    // Alert Code
    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Confirmation");
    alertDialog.setMessage("Are you sure you want to send this report?");
    run(gotDataS);

    // Timer Code
    pendingIntent = PendingIntent.getService(CreateNewForm_3.this, 0,
            new Intent(NewForm_3.this, MyAlarmService.class), 0);
    Send.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            alertDialog.setButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                                        int which) {

                        Toast.makeText(NewForm_3.this, "Sent", 0)
                                .show();

                        long firstTime = SystemClock.elapsedRealtime();
                        am = (AlarmManager) getSystemService(ALARM_SERVICE);
                        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                               firstTime + 10 * 1000, 30 * 1000, pendingIntent);
                        // firstTime Will be the current_time + ( 10 * 60 * 1000)  =)
                        // 10* 1000 will be (10 * 60 * 1000)
                        new Handler().postDelayed(new Runnable() {
                            public void run() {
                                bCancel.performClick();
                            }
                        }, (30 * 1000));
                        // ( 30 * 1000) will be firstTime + ( 2- duration)

                        Intent toRecentCases = new Intent(CreateNewForm_3.this,
                                LMPActivity.class);
                        startActivity(toRecentCases);
                    }
                });

            alertDialog.setButton2("No",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int which) {
                        // Here you can add functions
                    }
                });

            alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
            alertDialog.show();
        }

    });


    bCancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            am.cancel(pendingIntent);
        }
    });

    //For Notification -3-
    final AlertDialog alertDialog3 = new AlertDialog.Builder(this).create();
    alertDialog3.setTitle("Confirmation");
    alertDialog3.setMessage("Are you sure you want to quite?");

    // Press cancel button it will move user to actvity p
    Cancelb.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            alertDialog3.setButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int which) {

                        Intent toRecentCases = new Intent(NewForm_3.this,
                                                          LMPActivity.class);
                        startActivity(toRecentCases);
                    }
                });

            alertDialog3.setButton2("No",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // Doing nothing!
                        }
                    });

            alertDialog3.setIcon(android.R.drawable.ic_dialog_alert);
            alertDialog3.show();
        }
    });

}

This is Showing Dialog Activity

public class ShowingDialog extends Activity {

    boolean b;
    String CancelMsg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        //For Notification -1-
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("Confirmation");
        alertDialog.setMessage("Do you really want it?");

        // For Notification -2-
        final AlertDialog alertDialog2 = new AlertDialog.Builder(this).create();
        alertDialog2.setTitle("Confirmation");
        alertDialog2.setMessage("Are you sure you want it?");

        alertDialog.setButton("yes", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
               Intent intent= new Intent(ShowingDialog.this,MyPage.class);
               startActivity(intent);
           ;
           }
        });

        alertDialog.setButton2("no",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,
                        int which) {

                    alertDialog2.setButton("yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // Here you can add functions
                            // Sending a Message to server that the plaintiff found the case
                            // For Sending SMS with cancel Request
                            // Getting Case_ID + putting it inside CancelMsg
                               CancelMsg = "Case_ID cancel";
                            if (!b) {
                                try {
                                    sendSMS("5556", CancelMsg);
                                    Toast.makeText(ShowingDialog.this, "Sent", Toast.LENGTH_LONG)
                                            .show();
                                } catch (Exception e) {
                                    // TODO Auto-generated catch block
                                    Toast.makeText(ShowingDialog.this, e.getMessage(),
                                            Toast.LENGTH_LONG).show();
                                }
                            }
                        }
                    });

                    alertDialog2.setButton2("no", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // Here you can add functions
                            // Do nothing
                        }
                    });

                    alertDialog2.setIcon(android.R.drawable.ic_dialog_alert);
                    alertDialog2.show();
                }
            });

            alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
            alertDialog.show();
        }

        public void sendSMS(String number, String msg) throws Exception {
            if (!b) {
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(number, null, msg, null, null);
            }
            b = true;
        }
    }

In Manifest :

<activity
    android:name=".ShowingDialog"
    android:theme="@android:style/Theme.Dialog" />

Solution

  • It doesn't appear that you're overloading the back statement, so when you hit the back button you're traveling back up your Back Stack. The Android documentation has more information on this:

    Tasks and Back Stack