我正在 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 值:正常、签名和危险。谢谢。