2016-06-16 15 views
0

コンテンツプロバイダにフィルタを追加して、既知のアプリケーションIDからの要求のみを受け入れることはできますか? たとえば、com.domain1.app1とcom.domain2.app2が私が信頼する2つのアプリである場合、それらのアプリに自分のデータを読み取らせたいと考えています。他のアプリケーションは外部に保管してください。 インテントフィルタと似ていますが、他のアプリケーションからの着信要求に関連しています。Android:ContentProviderへのアクセスを制限する方法

私は同じ署名鍵について知っていますが、私が必要とするものではありません。

+1

Android用に焼いたものはありません。関連する 'ContentProvider'メソッド(例えば' query() ')の中から' Binder.getCallingUid() 'を試して、それがあなたに呼び出し元のUIDを与えるかどうか確認してください。もしそうなら、それを 'PackageManager'と共に使用して、そのUIDに関連するアプリケーションIDを決定することができます。しかし、 'ContentProvider'の中から' Binder.getCallingUid() 'が動作するかどうか忘れてしまいます。なぜなら、これがうまくいくかどうかわかりません。 – CommonsWare

+0

[Android Content Providersの重複している可能性があります - 私が書いていない一連のアプリケーションにプロバイダを制限することはできますか?](http://stackoverflow.com/questions/9132360/android-content-providers-is-it-プロバイダの設定を可能にすることができます)。とにかく 'Binder.getCallingUid()'を使って[ContentProviderとgetCallingUid()](https://groups.google.com/forum/#!topic/android-security-discuss/gl9pxKjH6yE)に従ってください。 – Marten

答えて

1

プロバイダーのアプリケーションでアクセス許可が指定されていない場合、他のアプリケーションはプロバイダーのデータにアクセスできません。ただし、プロバイダのアプリケーション内のコンポーネントは、指定されたアクセス権に関係なく、常に完全な読み取りおよび書き込みアクセス権を持ちます。

示されたように、here

関連する問題