1

外部で作成された SQLite データベースを使用する Android アプリケーションを開発しようとしています。必要なアプリケーションの運用サイクルは次のとおりです。

  1. データベースは、外部 (Windows デスクトップ) マシン上で定期的に (毎日) 再作成され、(別のデータベースからの) データが取り込まれます。
  2. そのデータベースは、USB または WIFI 経由で Android デバイスにプッシュされます。
  3. 新しくプッシュされたデータベースは、Android デバイスに新しいデータを入力するために使用されます。入力されたレコードにはフラグが付けられます (既存のレコードと区別するため)。
  4. 1 日の終わりに、データベースは Android デバイスから Windows デスクトップ マシンにプルされます (このプロセスは、Android アプリケーションではなく、Windows アプリケーションによって開始される必要があります)。
  5. 新しい (フラグが設定された) レコードは、Windows デスクトップの SQLite データベースから抽出され、検証されて、メインの Windows デスクトップ データベースに追加されます。
  6. 更新された完全なデスクトップ データベースは、新しい SQLite データベースにコピーされ、最終的に Android デバイスにプッシュされます (ポイント 1 と 2 を参照)。

ノート:

  1. リスト項目
  2. SQLite データベースは、Android アプリケーションによって Android デバイス上に作成できません。
  3. 外部で作成され、入力されたデータベースを apk の assets ディレクトリに配置することは現実的ではありません。これはアプリケーションの最初のインストールでのみ機能し、毎日のデータベースのプッシュ/プル ルーチンの重要な要件を満たしていないためです。
  4. SQLite データベースを Web サーバーに保存/インポートすることは現実的ではありません。ユーザーは通常、このアプリケーションの使用中にインターネットにアクセスできないためです。つまり、SQLite データベースのプッシュ/プル プロセスは、スタンドアロンに接続された Android で実行する必要があります。 USB または WIFI 経由の Windows マシン。
  5. ユーザーにAndroid デバイスに保存されているデータベース ファイルに自由にアクセスできます。
  6. 主な障害は、外部で作成され、プッシュされたデータベースが Android アプリケーションによって認識されることのようです。アプリケーションによって作成されたデータベース ファイルを別のフォルダー (まだ data/package_name/.. ルート セクション内) にコピーしてから、それを ../databases/ フォルダーにコピーしてテストしました。これは、アプリケーションによるデータベース アクセスを混乱させるのに十分でした。変更されていない同じデータベース ファイルを開こうとしたにもかかわらず、「トレース ファイルを開くときにエラーが発生しました: そのようなファイルまたはディレクトリはありません (2)」というメッセージが表示されました。この制限は、Android の「サンドボックス」ファイル セキュリティ保護によるものではないでしょうか。

上記のデータベースのコピー/プッシュ/プルの問題を克服する方法と、この必要なデータベース アクセスのプッシュ/プル モデルを実装する方法を教えてください。

4

1 に答える 1

1

USBが必要な場合は、ADBが自動的に行います。

adb push <local db> <android db>

adb pull <android db> <local db>

例えば:

adb push database.db /sdcard/mypath/database.db
adb push /sdcard/mypath/database.db database.db

次のように、WindowsマシンでAndroidデバイスからデータベースを削除することもできます。

adb shell rm /sdcard/mypath/database.db

さらに、adbを使用してアクティビティを開始したり、インテントをブロードキャストしたりできるため、dbをプルする前に、データベースを閉じて終了するようにアプリに指示できます。

Wifiがオプション(より良いオプション)である場合、wifi経由でAndroidデバイス上のデータにアクセスするさまざまな方法があります。

  • NanoHTTPdは、単一の.javaファイルを使用してデバイスをWebサーバーに変換します。
  • jCIFSを使用すると、AndroidデバイスからWindows共有にアクセスできます。
于 2013-02-02T06:34:43.197 に答える