0

我正在 Android 上编写两个应用程序,它使用权限机制来强制对调用者进行限制。

它们在 Froyo 2.2 或更高版本上完美运行,但不适用于 Eclair 2.1。

第一个应用程序(调用者)在 Manifest<uses-permission ... />中,第二个(被调用者)定义了一个新的权限<permission .... />

有人对 Eclair 2.1 有同样的问题吗?

我正在使用仅 2.1 的模拟器(带有 google api 的 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)

当我安装 apk 时,与 Froyo 不同,没有关于新权限的日志。

应用程序清单是:

Pkg1(调用者)

<uses-permission android:name="xy.android.myapp.ACCESS_SERVICE" />

包2

<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 回答