19

ContentProviderアプリケーション間でデータベースを共有するために、Android アプリケーションで使用しています。AndroidManifest.xmlデータベースを共有するには、次のようにプロバイダー アクセスを追加する必要があります。

<provider
android:name="Contentprovider"
android:authorities="umb.con.apps.vid" />

<provider/>追加して正常に実装しましたが、 「エクスポートされたコンテンツ プロバイダーは機密データの可能性があるデータへのアクセスを提供できます」のような警告メッセージがタグに表示されます。将来的にセキュリティ上の問題が発生する可能性はありますか?

4

2 に答える 2

38

アプリ内から内部的にコンテンツ プロバイダーにアクセスしたいだけの場合は、次のように追加します。

android:exported="false"

マニフェストのノードに。

ドキュメントから:

false: プロバイダは他のアプリケーションで使用できません。android:exported="false" を設定して、プロバイダーへのアクセスをアプリケーションに制限します。プロバイダーと同じユーザー ID (UID) を持つアプリケーションのみがアクセスできます。

一方、実際にはデータを他のアプリに公開したいがデータ ストレージに機密データもある場合は、複数のコンテンツ プロバイダーを使用できるため、「パブリック」プロバイダーのみを公開できることに注意してください。

于 2012-11-19T06:26:44.233 に答える
9

また、コンテンツ プロバイダーへの外部アクセスを許可し、警告を黙らせたい場合は、追加してください。 tools:ignore="ExportedContentProvider"

例えば

<provider
tools:ignore="ExportedContentProvider"
android:exported="true"
android:name="Contentprovider"
android:authorities="umb.con.apps.vid" />
于 2013-02-21T15:00:31.043 に答える