Android ContetProviderを非公開にする方法

ContentProviderを自分だけ使用して、他のアプリケーションから使用禁止にする方法です。

ちょっとぐぐってみたところ、証明書で制限するという記事は見かけましたが、exportedを使った記事は見当たらなかったので…

<provider android:name="jp.co.taosoftware.android.ssb.contentprovider.NormalProvider" android:authorities="jp.co.taosoftware.android.sb.contentprovider.normalprovider" android:exported="false"/>

android:exported="false"を指定するだけでOKです。

exported

他のアプリケーションからこのコンテントプロパイダが使用可能かを指定します。
指定しない時はtrue 、trueの場合は使用可能でfalseの場合は使用不可能になります。
falseにしたときは、自分自身とユーザIDが同じアプリケーションのみアクセス可能となります

解説

コンテントプロパイダ自体は実装はするが、外部から利用されたくない時は、android:exported=”false”を指定します。
証明書が同じアプリケーションのみアクセス可能にするを作成し、アクセス制限をかける事でもほぼ同じ事ができますが、exported指定で簡単に指定可能です。
シェアードユーザIDが同じアプリケーションからは参照可能になりますが、証明書が同じでないとシェアードユーザIDは同じに出来ないため、実質同じ開発者のアプリケーションからアクセス可能になるだけです。

ちっちゃなTipsでした。


コメント

このブログの人気の投稿

島へ移住の話【炊飯】

ドローンプログラミング体験教室を伊豆大島の小学校でしてきました

情報処理安全確保支援士登録証のカード型が届きました。