他の多くの人と同じように、アプリの「ライト」バージョンと「プロ」バージョンがあります。内部ストレージにあるデータベースを使用します。ユーザーがプロ バージョンを購入して、データベースを失うことなくインストールできるようにしたいと考えています。
部分的な解決策: 複数のアプリで同じデータベースを使用する方法に関する他の投稿を見たことがあります。基本的に、これには次の 2 つのことが必要です。
- 両方のマニフェストは、マニフェストで同じ android:sharedUserId を宣言します。
- アプリの 1 つは、他のアプリのコンテキストを使用してデータベースを開く必要があります。
私はこれを試してみましたが、はい、うまくいきます!
問題:ライト バージョンをアンインストールすると、データベースが削除されます。これに従ってください: ユーザーはライトバージョンをインストールします。軽量バージョンはデータベースを作成し、彼は喜んでデータを作成してそこに保存します。その後、彼はプロをインストールすることにしました。プロ版はライトで作成されたデータベースにアクセスし、すべて正常に動作します。最後に、Lite はもう必要ないので、Lite をアンストールします。これで、lite バージョンをアンインストールしたときに Android によって db が削除されたため、pro が動作しなくなります。
解決策は? 頭に浮かぶ 1 つの解決策は、データベースを所有する 3 つ目のアプリを用意することです。シンプルにインストールされ、パッケージと同じ名前の「何もしない」アプリです。UI がなく、実際に実行されることはありません。次に、データベースに影響を与えることなく、lite および pro アプリをインストールまたはアンインストールできます。
これは良い考えですか?より良い方法はありますか (db のプロバイダーを作成する以外に)? これが合理的なアプローチである場合、サービスではない UI のないアプリを作成するにはどうすればよいですか?