title: Preventing the HOME button to close activity
body: <p>I am currently using a custom AlertDialog which has a Theme.Dialog theme in a Activity that requires users to type the current password to proceed.</p>
  
  <p>According to <a href="https://stackoverflow.com/questions/2162182/android-is-it-possible-to-disable-the-click-of-home-button">Android - Is It possible to disable the click of home button</a> i have tried most of the methods but it doesn't work.</p>
  
  <p>Activity - onCreate</p>
  
  <pre><code>      SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(PhysicalTheftDialog.this);
  
          boolean isServerRunning = sp.getBoolean("isServerRunning", false);
              if (isServerRunning == false) {
                  startService(new Intent(PhysicalTheftDialog.this, MyService.class));
  
              }
              else {
                  sp.getBoolean("isServerRunning", true);
              }
  </code></pre>
  
  <p>Service</p>
  
  <pre><code>    @Override
      public void onCreate() {
  /*      //Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
          Log.d(TAG, "onCreate");
  
          player = MediaPlayer.create(this, R.raw.braincandy);
          player.setOnPreparedListener(this);
          try {
              player.prepareAsync();
  
          } catch (Exception e) {
              Log.e(TAG, "", e);
          }
          player.setLooping(true); // Set looping*/
          this.context = getApplicationContext();
          //Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
          SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
          boolean isServerRunning = sp.getBoolean("isServerRunning", true);
  
          while (!isServerRunning) {
              // THAT CODE: check if activity is on the top
              Handler handler = new Handler(); 
  
              handler.postDelayed(new Runnable() { 
                   public void run() { 
  
                          // get a list of running processes and iterate through them
                          ActivityManager activityManager = (ActivityManager)context.getSystemService(Activity.ACTIVITY_SERVICE);
  
                          // get the info from the currently running task
                          List&lt;ActivityManager.RunningTaskInfo&gt; taskInfo = activityManager.getRunningTasks(1);
                          ComponentName componentInfo = taskInfo.get(0).topActivity;
  
                          // if top activity is not "MyActivity" activity, then launch it
                          if("nyp.android.project".equals(componentInfo.getClassName()) == false) {
                              Intent intent = new Intent(MyService.this, PhysicalTheftDialog.class);
                              intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                              startActivity(intent);
  }
                   } 
              }, 2000); 
  
              boolean serviceStatus = sp.getBoolean("isServerRunning", false);
          }
      }
  </code></pre>
  
  <p>Logcat</p>
  
  <pre><code>E/AndroidRuntime( 9799): FATAL EXCEPTION: main
  E/AndroidRuntime( 9799): java.lang.RuntimeException: Unable to start service nyp.android.project.MyService@41b29ff0 with Intent { cmp=xxxx }: java.lang.NullPointerException
  E/AndroidRuntime( 9799):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2387)
  E/AndroidRuntime( 9799):    at android.app.ActivityThread.access$1900(ActivityThread.java:127)
  E/AndroidRuntime( 9799):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1221)
  E/AndroidRuntime( 9799):    at android.os.Handler.dispatchMessage(Handler.java:99)
  E/AndroidRuntime( 9799):    at android.os.Looper.loop(Looper.java:137)
  E/AndroidRuntime( 9799):    at android.app.ActivityThread.main(ActivityThread.java:4511)
  E/AndroidRuntime( 9799):    at java.lang.reflect.Method.invokeNative(Native Method)
  E/AndroidRuntime( 9799):    at java.lang.reflect.Method.invoke(Method.java:511)
  E/AndroidRuntime( 9799):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
  E/AndroidRuntime( 9799):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
  E/AndroidRuntime( 9799):    at dalvik.system.NativeStart.main(Native Method)
  E/AndroidRuntime( 9799): Caused by: java.lang.NullPointerException
  E/AndroidRuntime( 9799):    at nyp.android.project.MyService.onStart(MyService.java:95)
  E/AndroidRuntime( 9799):    at android.app.Service.onStartCommand(Service.java:438)
  E/AndroidRuntime( 9799):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2370)
  E/AndroidRuntime( 9799):    ... 10 more
  </code></pre>