パーミッションメカニズムを使用して発信者に制限を適用する2つのアプリをAndroidで作成しています。
Froyo 2.2以降では完全に機能しますが、Eclair2.1では機能しません。
最初のアプリ(呼び出し元)はマニフェスト<uses-permission ... />
にあり、2番目のアプリ(呼び出される)はで新しい権限を定義し<permission .... />
ます。
誰かがEclair2.1で同じ問題を抱えていますか?
2.1のみのエミュレーター(GoogleAPIを使用した2.1-update1および2.1update1)でのテストに使用しています。
これはlogcatからのエラーです:
W/ActivityManager( 52): Permission Denial: Accessing service ComponentInfo{xy.android.myapp.pkg2/xy.android.myapp.pkg2.Service} from pid=52, uid=1000 requires xy.android.myapp.ACCESS_SERVICE
W/System.err( 499): java.lang.SecurityException: Not allowed to start service Intent { act=xy.android.myapp.pkg2.REMOTE_LIST cmp=xy.android.myapp.pkg2/.Service (has extras) } without permission xy.android.myapp.ACCESS_SERVICE
W/System.err( 499): at android.app.ApplicationContext.startService(ApplicationContext.java:765)
W/System.err( 499): at android.content.ContextWrapper.startService(ContextWrapper.java:326)
W/System.err( 499): at xy.android.myapp.pkg1.MainActivity$6.run(MainActivity.java:711)
W/System.err( 499): at java.lang.Thread.run(Thread.java:1096)
Froyoとは異なり、apkをインストールすると、新しい権限に関するログが記録されません。
アプリのマニフェストは次のとおりです。
Pkg1(発信者)
<uses-permission android:name="xy.android.myapp.ACCESS_SERVICE" />
Pkg2
<permission android:name="xy.android.myapp.ACCESS_SERVICE"
android:label="@string/label"
android:description="@string/desc"
android:protectionLevel="signature" />
そして、サービス定義では:
<service ... android:permission="xy.android.myapp.ACCESS_SERVICE" ... />
私はprotectionLevel値でテストしました:通常、署名、危険。ありがとう。