title: Android Sim Tracker code
body: <p>Hie..</p>
  
  <p>I am making an app in which I am detecting whether SIM has changed or not..?
  On installation of my app I am storing the current SIM serial number in shared preferences.
  On boot I have registered a broadcast receiver. In <code>onReceive()</code> method I am accessing current SIM serial number and comparing it with the stored one on the time of installation,
  Below is my code of receiver :</p>
  
  <pre><code>    package com.secuirity.sms;
  
      import org.apache.harmony.xnet.provider.jsse.GMailSender;
  
      import android.content.BroadcastReceiver;
      import android.content.Context;
      import android.content.Intent;
      import android.content.SharedPreferences;
      import android.os.AsyncTask;
      import android.telephony.SmsManager;
      import android.telephony.TelephonyManager;
      import android.util.Log;
  
      public class BootUpReciever extends BroadcastReceiver{
  
      Context context;
      String email;
      String currentSimSerial;
      SharedPreferences settings;
      SmsManager smsMgr = SmsManager.getDefault();
      public static final String PREFS_NAME = "MyPrefsFile";
  
      @Override
      public void onReceive(Context context, Intent intent) {
  
          settings = context.getSharedPreferences(PREFS_NAME, 0);
          String storedSimSerial = settings.getString("storedSimSerial", null);
          Log.d("Stored Sim Serial::",storedSimSerial);
  
          TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
          currentSimSerial = tm.getSimSerialNumber();
          Log.d("Current Sim Serial","::"+currentSimSerial);
          String trustedNum = settings.getString("cellno", null);
          email = settings.getString("email", null);
  
          if(currentSimSerial == storedSimSerial){
  
          }else{
              Log.d("Sim changed","!!!");
              new GmailAsync().execute("");
              String sms = "Sim card has changed, " +
                      "Sim Serial Number of this card is\n"+currentSimSerial+
                      "Network Operator"+tm.getNetworkOperatorName();
              smsMgr.sendTextMessage(trustedNum, null,sms, null, null);
          }
  
          Intent sms = new Intent(context, SMSReceiver.class);
          sms.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(sms);
  
          Intent netAvailability = new Intent(context, CheckingNetworkAvailability.class);
          netAvailability.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(netAvailability); 
      }
      public class GmailAsync extends AsyncTask&lt;String, Void, String&gt;{
  
          @Override
          protected String doInBackground(String... params) {
              // TODO Auto-generated method stub
              String mail_body = "Sim serial number is "+currentSimSerial;
              String subject = "Your Sim has changed!!!";         
              GMailSender sender = new GMailSender("securemob.viasms@gmail.com", "smsfun890");
              try {
                  sender.sendMail(subject,
                          mail_body+"\nThanks for using Mobile Security App",
                          "securemob.viasms@gmail.com",
                          email,null);
              } catch (Exception e) {
                  Log.e("SendMail", e.getMessage(), e);
              }
              return null;
          }
          @Override
          protected void onPostExecute(String result) {
              // TODO Auto-generated method stub
              super.onPostExecute(result);
              Log.d("Mail","Sent");
          }
      }
  }
  </code></pre>
  
  <p>But Its not working.... :(:(:(
  I have the following permissions READ_PHONE_STATE" and "RECEIVE_BOOT_COMPLETED"</p>