0

パーミッションメカニズムを使用して発信者に制限を適用する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値でテストしました:通常、署名、危険。ありがとう。

4

1 に答える 1

0

私はちょうどこれに出くわしました。許可を宣言するアプリは、それを使用するアプリより前にインストールする必要があります。そうしないと、適切な許可が [設定] に表示されていても、例外がスローされます。

于 2012-02-29T10:32:06.103 に答える