4

ContentProvider を使用してアプリケーションを開発しています。マニフェストで宣言されています:

<provider android:name="foor.bar.FooBarProvider"
          android:authorities="foo.bar.FoorBarProvider" />

すべてが正常に機能しており、プロバイダーにアクセスできます。問題は、自分のアプリのデモ バージョンを作成し、同じコンテンツ プロバイダーを共有して、ユーザーがフル バージョンをインストールしたときにデータの同期が保たれるようにすることです。また、フルバージョンまたはデモバージョンのみをインストールできる必要があります。したがって、コンテンツ プロバイダを両方に含める必要があります。

ここで、両方のアプリをインストールしようとすると、INSTALL_FAILED_CONFLICTING_PROVIDERエラー メッセージが表示されます。明らかに、両方の AndroidManifest が同じコンテンツ プロバイダーを宣言しているためです。

マニフェストで、このコンテンツ プロバイダーがまだ存在しない場合にのみ使用するように指示する方法はありますか? または別の回避策?

解決策は、フル バージョンがデモ コンテンツ プロバイダーからフル バージョン コンテンツ プロバイダーにデータを移行することですが、それは避けたいと思います。

4

1 に答える 1

5

解決策は、フル バージョンがデモ コンテンツ プロバイダーからフル バージョン コンテンツ プロバイダーにデータを移行することですが、それは避けたいと思います。

以下は、考えられる一連のイベントです。

  1. ユーザーがライト版をインストール
  2. ユーザー ユーザー ライト バージョン、データの保存
  3. ユーザーはフルバージョンにアップグレードしますが、上記の引用文に従ってデータをコピーしません
  4. ユーザーがライト バージョンをアンインストールし、そのデータを削除する
  5. ユーザーがマーケットで 1 つ星の評価を付けた

この問題を回避するには、フル バージョンの最初の実行時にデータをライト バージョンからフル バージョンに複製する必要があります。

于 2010-08-26T23:42:16.267 に答える