2

ContentProviderを介して共通のデータストレージライブラリを提供する共通のライブラリがあります。次に、個々のアプリケーションはライブラリを参照しますが、独自のデータストレージを持ちます(つまり、データベーススキーマは共有されますが、各アプリには独自のデータベースがあります)。

私の問題は、2つのアプリを同時にインストールすると、権限が同じであるために競合が発生することです。そのため、アプリごとに一意のコンテンツ権限が必要ですが、コードで一意の権限を参照するための適切な方法を見つけることができません(マニフェストの構成は問題ではありません)。推奨されているように、各タイプで静的CONTENT_URIを使用していますが、アプリごとに異なる値を返す必要があります(アプリ固有の権限を参照)。すべてを非静的アクセサーに変える必要があるのではないかと思いますが、実際にはそうしたくありません。私が見逃している他の方法はありますか?おそらくマニフェストに設定できるものはありますか?

4

1 に答える 1

3

PackageManager.getProviderInfo()を使用してプロバイダーのProviderInfoを取得する必要があります。ComponentNameは、プロバイダーが含まれるコンテキストとそのクラスから構築できます。ProviderInfo.authorityが権限を提供します。(複数の権限がある場合、これらはすべて、コンマ区切りのリストとしてその文字列にパッケージ化されます。)

于 2011-09-01T19:24:01.930 に答える