外部で作成された SQLite データベースを使用する Android アプリケーションを開発しようとしています。必要なアプリケーションの運用サイクルは次のとおりです。
- データベースは、外部 (Windows デスクトップ) マシン上で定期的に (毎日) 再作成され、(別のデータベースからの) データが取り込まれます。
- そのデータベースは、USB または WIFI 経由で Android デバイスにプッシュされます。
- 新しくプッシュされたデータベースは、Android デバイスに新しいデータを入力するために使用されます。入力されたレコードにはフラグが付けられます (既存のレコードと区別するため)。
- 1 日の終わりに、データベースは Android デバイスから Windows デスクトップ マシンにプルされます (このプロセスは、Android アプリケーションではなく、Windows アプリケーションによって開始される必要があります)。
- 新しい (フラグが設定された) レコードは、Windows デスクトップの SQLite データベースから抽出され、検証されて、メインの Windows デスクトップ データベースに追加されます。
- 更新された完全なデスクトップ データベースは、新しい SQLite データベースにコピーされ、最終的に Android デバイスにプッシュされます (ポイント 1 と 2 を参照)。
ノート:
- リスト項目
- SQLite データベースは、Android アプリケーションによって Android デバイス上に作成できません。
- 外部で作成され、入力されたデータベースを apk の assets ディレクトリに配置することは現実的ではありません。これはアプリケーションの最初のインストールでのみ機能し、毎日のデータベースのプッシュ/プル ルーチンの重要な要件を満たしていないためです。
- SQLite データベースを Web サーバーに保存/インポートすることは現実的ではありません。ユーザーは通常、このアプリケーションの使用中にインターネットにアクセスできないためです。つまり、SQLite データベースのプッシュ/プル プロセスは、スタンドアロンに接続された Android で実行する必要があります。 USB または WIFI 経由の Windows マシン。
- ユーザーにAndroid デバイスに保存されているデータベース ファイルに自由にアクセスできます。
- 主な障害は、外部で作成され、プッシュされたデータベースが Android アプリケーションによって認識されることのようです。アプリケーションによって作成されたデータベース ファイルを別のフォルダー (まだ data/package_name/.. ルート セクション内) にコピーしてから、それを ../databases/ フォルダーにコピーしてテストしました。これは、アプリケーションによるデータベース アクセスを混乱させるのに十分でした。変更されていない同じデータベース ファイルを開こうとしたにもかかわらず、「トレース ファイルを開くときにエラーが発生しました: そのようなファイルまたはディレクトリはありません (2)」というメッセージが表示されました。この制限は、Android の「サンドボックス」ファイル セキュリティ保護によるものではないでしょうか。
上記のデータベースのコピー/プッシュ/プルの問題を克服する方法と、この必要なデータベース アクセスのプッシュ/プル モデルを実装する方法を教えてください。