title: getWritableDatabase() throwing null pointer exception
body: <p>I have a service class having following code - </p>
  
  <pre><code>public class ReminderService extends WakeReminderIntentService{      
      private static final String TAG ="ReminderService";
      private TasksDBAdapter dbHelper;
      public ReminderService(){
          super("ReminderService");
          dbHelper = new TasksDBAdapter(this);
          dbHelper.open(); //THIS LINE GIVES ERROR
      }
  </code></pre>
  
  <p>code for TasksDBAdapter open() method is as -</p>
  
  <pre><code>    public TasksDBAdapter(Context ctx) {                                 
         this.mCtx = ctx;
     }
  
      public TasksDBAdapter open() throws android.database.SQLException {
             mDbHelper = new DatabaseHelper(mCtx);
             Log.i(TAG, "mDbHelper in open method--&gt;" + mDbHelper);
             mDb = mDbHelper.getWritableDatabase(); // ACTUAL ERROR LINE
             return this;
         }
  </code></pre>
  
  <p>the log value receives address which means mDbHelper gets initialized properly.Log.i gives - </p>
  
  <pre><code>11-01 23:32:32.004: I/TasksDBAdapter(681): mDbHelper in open method--&gt;ray.kaushik.simple.task.manager.TasksDBAdapter$DatabaseHelper@411e7a10
  </code></pre>
  
  <p>but </p>
  
  <pre><code>mDb = mDbHelper.getWritableDatabase();
  </code></pre>
  
  <p>throws the null pointer error.</p>
  
  <p>Logcat gives - </p>
  
  <pre><code>11-01 23:32:32.043: E/AndroidRuntime(681): FATAL EXCEPTION: main
  11-01 23:32:32.043: E/AndroidRuntime(681): java.lang.RuntimeException: Unable to instantiate service ray.kaushik.simple.task.manager.ReminderService: java.lang.NullPointerException
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2347)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.app.ActivityThread.access$1600(ActivityThread.java:130)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.os.Handler.dispatchMessage(Handler.java:99)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.os.Looper.loop(Looper.java:137)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.app.ActivityThread.main(ActivityThread.java:4745)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at java.lang.reflect.Method.invokeNative(Native Method)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at java.lang.reflect.Method.invoke(Method.java:511)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at dalvik.system.NativeStart.main(Native Method)
  11-01 23:32:32.043: E/AndroidRuntime(681): Caused by: java.lang.NullPointerException
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at ray.kaushik.simple.task.manager.TasksDBAdapter.open(TasksDBAdapter.java:38)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at ray.kaushik.simple.task.manager.ReminderService.&lt;init&gt;(ReminderService.java:16)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at java.lang.Class.newInstanceImpl(Native Method)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at java.lang.Class.newInstance(Class.java:1319)
  11-01 23:32:32.043: E/AndroidRuntime(681):  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2344)
  11-01 23:32:32.043: E/AndroidRuntime(681):  ... 10 more
  </code></pre>
  
  <p>My databaseHelper class code  - </p>
  
  <pre><code>    private static class DatabaseHelper extends SQLiteOpenHelper {          
          DatabaseHelper(Context context) {
              super(context, DATABASE_NAME, null, DATABASE_VERSION);      
          }
          @Override
          public void onCreate(SQLiteDatabase db) {                       
              db.execSQL(DATABASE_CREATE);                                
          }
  
          @Override
          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {                                   
  
          }
      }
  </code></pre>
  
  <p>where DATABASE_NAME and all others have been defined globally - </p>
  
  <pre><code>private static final String DATABASE_NAME = "data";              
      private static final String DATABASE_TABLE = "reminders";        
      private static final int DATABASE_VERSION = 1;                   
  
      public static final String KEY_TITLE = "title";                  
      public static final String KEY_BODY = "body";
      public static final String KEY_DATE_TIME = "reminder_date_time"; 
      public static final String KEY_ROWID = "_id";                    
      private static final String TAG = "TasksDBAdapter";
  </code></pre>
  
  <p>can anyone please provide some pointers.. thanks in advance..!!!</p>