使用android时出现的问题:protectionLevel=";签名;

使用android时出现的问题:protectionLevel=";签名;,android,android-service,Android,Android Service,我试图阻止应用程序绑定到服务,如果它们没有使用与包含应用程序相同的证书进行签名。为此,我使用元素在清单(包含服务的应用程序的)中声明了一个新权限,并将新权限的protectionLevel设置为Signature,如图所示 <permission android:name="jp.co.abc.android.OMRSSettings.permission.Access" android:protectionLevel="signature"></permission>

我试图阻止应用程序绑定到服务,如果它们没有使用与包含应用程序相同的证书进行签名。为此,我使用元素在清单(包含服务的应用程序的)中声明了一个新权限,并将新权限的protectionLevel设置为Signature,如图所示

<permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"
android:protectionLevel="signature"></permission>

<uses-permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"/>
尽管我在第二个应用程序的清单中正确声明了
,但有人能告诉我为什么我有权限问题吗

非常感谢您的帮助

编辑


修改为包括lenik在其回答中建议的更正。

您请求的许可是:

<permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"

您应该决定在这两种情况下都使用“OMR”或“OMR”,一个“S”是额外的。

除了lenik的解决方案,即不将权限名称与当前实现弄乱之外,安装顺序也很重要。在安装客户端之前,必须先安装服务(定义了
)。否则,客户端将不会收到权限,因为Android将忽略它无法识别的权限的
。如果您将
元素放在两个应用程序中(具有相同的值),安装顺序将不再重要。

如果从清单中删除
android:protectionLevel=“signature”
,您可以绑定到服务吗?如果我从第一个应用程序的清单中删除android:protectionLevel=“signature”,我可以从第二个应用程序绑定到服务。如果需要,您可以向下投票。出于安全原因,我修改了包的名称,在那里我misspelt@user1400538我不关心投票,您能编辑您的问题以更正拼写错误吗?在我的问题中解释的场景中,如果服务(定义了服务的位置)是作为自定义ROM的一部分构建的应用程序的一部分,我可以访问该应用程序,而客户端是作为普通android应用程序安装在手机中的应用程序,这是否会导致上述权限问题?
01-02 00:06:54.531: INFO/PowerManagerService(425): Start Light.setBrightness(), [20],  [3]
01-02 00:06:56.473: INFO/PowerManagerService(425): Start Light.setBrightness(), [130], [3]
01-02 00:06:58.055: WARN/dalvikvm(4956): threadid=1: thread exiting with uncaught exception (group=0x40b70390)
01-02 00:06:58.055: WARN/ActivityManager(425): Permission Denial: Accessing service ComponentInfo{jp.co.abc.android.omrsettings/jp.co.xyz.bluetooth.profile.TIPServer} from   pid=4956, uid=10158 requires jp.co.abc.android.OMRSSettings.permission.Access
01-02 00:06:58.065: ERROR/AndroidRuntime(4956): FATAL EXCEPTION: main
java.lang.SecurityException: Not allowed to bind to service Intent {     act=jp.co.xyz.bluetooth.api.ITimeServer }
at android.app.ContextImpl.bindService(ContextImpl.java:1187)
at android.content.ContextWrapper.bindService(ContextWrapper.java:370)
at jp.co.abc.middleware.tip.LeTimeServerProfile.startTimeServer(LeTimeServerProfile.java:45)
at jp.co.abc.tip.TimeActivity.onClick(TimeActivity.java:49)
at android.view.View.performClick(View.java:3511)
at android.view.View$PerformClick.run(View.java:14133)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)
01-02 00:06:58.095: WARN/ActivityManager(425): Force finishing activity      jp.co.abc.tip/.TimeActivity
<permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"
requires jp.co.abc.android.OMRSettings.permission.Access