Eclair 2.1 的 IntentService 权限
我正在 Android 上编写两个应用程序,它们使用权限机制对调用者实施限制。
它们可以在 Froyo 2.2 或更高版本上完美运行,但不能在 Eclair 2.1 上运行。
第一个应用程序(调用者)在清单中具有
,第二个应用程序(被调用者)使用
.
有人在使用 Eclair 2.1 时遇到同样的问题吗?
我正在使用仅 2.1 模拟器(2.1-update1 和 2.1update1 与 google api)进行测试。
这是来自 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" />
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" ... />
我已经使用保护级别值进行了测试:正常、签名和危险。谢谢。
I'm writing two app on Android that uses the permission mechanism to enforces restrictions on caller.
They works perfectly on Froyo 2.2 or greater, but not on Eclair 2.1.
The first app (the caller) have in the Manifest <uses-permission ... />
and the second (that is called) define a new permission with <permission .... />
.
Someone have the same trouble with Eclair 2.1?
I'm using for testing on 2.1 only emulator (2.1-update1 and 2.1update1 with google api).
This is error from 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)
When I install the apk, unlike on Froyo, there isn't log about the new permission.
The Manifest of apps are:
Pkg1 (the caller)
<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" />
And in the service definition:
<service ... android:permission="xy.android.myapp.ACCESS_SERVICE" ... />
I've tested with protectionLevel value: normal, signature and dangerous. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我自己刚刚偶然发现了这一点。声明权限的应用程序需要在使用该权限的应用程序之前安装,否则即使“设置”上显示了正确的权限,它也会引发异常。
I've just stumbled upon this myself. The app that declares the permission needs to be installed before the one that uses it or it will throw an exception even though the right permission shows up on Settings.