まず、SQLiteOpenHelperのソースコードからgetWritableDatabaseを見てみると
やっていること自体はWeatherNowで実装している方法と一緒なのですが、データベース作成の部分が
・Context#openOrCreateDatabase
・SQLiteDatabase#openOrCreateDatabase
と違います。
Context#openOrCreateDatabaseでは第二因数に
・Context.MODE_PRIVATE(このアプリしか読み書きできない)
・Context.MODE_WORLD_READABLE(他のアプリから読めるけど書き込みは出来ない)
・Context.MODE_WORLD_WRITABLE(他のアプリから書き込みも出来る)
を指定。SQLiteOpenHelperでは0(Context.MODE_PRIVATE)が指定されています。
で、Context#openOrCreateDatabaseの影響範囲に付いてちろっと調べてみました。
結論だけ言うと、SQLoteOpenHelperを利用して
・API7(2.1)の端末ではSDカード上のDB読み書きできない
・API8(2.2)の端末ではSDカード上でもDB読み書きできる
でした。API8からはアプリのSDカード移動があるので、その関係で動作が変わったのかも?
ちなみに第二因数のファイルモードですが、アプリ専用領域(/data/data/******/)でしか機能しない様で、SD上の任意の場所にMODE_PRIVATEなデータベースは作成できないらしい。
まぁあれですよ