#navi_header|技術| AndroidManifest.xmlでの""と"android:permission"属性の使用例+メモ。 * サンプルコード bitbucketにてMercurialで公開: - https://bitbucket.org/msakamoto_sf/androidpermissionsamples -- "PermissionTest1" : Activity, BroadcastReceiver, Service, ContentProviderを用意しているアプリ。 -- "PermissionTest2" : PermissionTest1の各コンポーネントを呼び出すアプリ。AndroidManifest.xmlで必要な""を定義済み。PermissionTest1と同じ証明書で署名する。 -- "PermissionTest3" : PermissionTest2と内容は同じだが、PermissionTest1,2と異なる証明書で署名する。 * 結果 詳細: - AndroidPermissionMatrix -- https://docs.google.com/spreadsheet/ccc?key=0Ahykuzqx5TQRdGVrSnNudVExN0tONXZPcTJLX1R3UGc 全体傾向: + android:exported="false"の非公開は呼べない。 + android:exported省略時は、IntentFilterが無ければ非公開、IntenFilterが有れば公開扱い。 ++ ReceiverについてはIntentFilter有りのexported無しが非公開扱いになっており、これだけ予想と異なっていた。 + Permissionがある場合は、上記の判断 AND Permissionのレベルに応じた判定となる。 ++ PermissionTest2ではSignatureレベルの公開扱いは呼べる、PermissionTest3ではSignatureレベルは全て呼べない。 ContentProviderについて: + API Level 8 ではexported属性の指定が無視され、公開扱いになってしまう。 ** 参考資料 - Security and Permissions | Android Developers -- http://developer.android.com/guide/topics/security/security.html ContentProviderとpermissionの参考資料: - コンテントプロバイダを公開しない方法 - haruserのめもちょ -- http://d.hatena.ne.jp/haruser/20090823/1251042430 - ContentProviderでアプリケーションのデータを共有する その1 - プログラミング雑記 -- http://d.hatena.ne.jp/Korsakov/20101128/1290957083 - ContentProviderでデータを共有する その2 - プログラミング雑記 -- http://d.hatena.ne.jp/Korsakov/20101205/1291566790 --- 署名レベルのpermissionでアクセス制御する解説。 - Taosoftware: Android ContentProviderのexport指定が使えない -- http://www.taosoftware.co.jp/blog/2011/10/android_contentproviderexport.html --- export属性は Android 2.2, API Level 8 以前は無視されていた。 - Y.A.M の 雑記帳: Android SearchManager 検索ボックスを使うぜ! -- http://y-anz-m.blogspot.com/2010/03/android-searchmanager.html --- "path-permission"の"android:path"をどう書けばいいのか?のサンプル。 - ContentProvider で特定のアプリにのみ利用を許可する - おともだち革命 -- http://d.hatena.ne.jp/s5r/20110225/1298613278 --- grantUriPermissionの紹介と、さらに柔軟にBinder.getCallingUri()で呼び出し元を判別して制御する例。 #navi_footer|技術|