Problema con android: protectionLevel = "firma"

Estoy tratando de impedir que las aplicaciones se vinculen a un servicio si no están firmadas con el mismo certificado que la aplicación que lo contiene. Para ello he declarado un nuevo permiso en el manifiesto (de la aplicación que contiene el Servicio) mediante el uso de un elemento y establecer el nivel de protección del nuevo permiso a Firma como se muestra.

<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"/> 

Luego, en la declaración de manifiesto para el Servicio, utilizo un atributo android: permission para que este nuevo permiso sea obligatorio para enlazar con el Servicio.

 <service android:name="jp.co.xyz.bluetooth.profile.TIPServer" android:permission="jp.co.abc.android.OMRSSettings.permission.Access" > <intent-filter> <action android:name="jp.co.xyz.bluetooth.api.ICommonResultCallback" /> <action android:name="jp.co.xyz.bluetooth.api.ITimeServer" /> </intent-filter> 

Intento acceder a este servicio desde otra aplicación. En el manifiesto de esta segunda aplicación, agrego el <uses-permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"/> y tratar de enlazar con el servicio de la primera aplicación.

Pero recibo la siguiente excepción.

 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 

¿Puede alguien por favor, hágamelo saber por qué tengo problemas de permiso aunque declaro correctamente <uses-permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"/> en el manifiesto de mi segunda aplicación.

Cualquier ayuda es muy apreciada.

EDITAR

Modificado para incluir la corrección lenik sugerida en su respuesta.

Además de la solución de lenik de no estropear sus nombres de permisos, con su implementación actual, la orden de instalación importa. Primero debe instalar el servicio (donde se define el <permission> ), antes de instalar el cliente. De lo contrario, el cliente no recibirá el permiso, ya que Android ignorará un <uses-permission> para un permiso que no reconozca. Si coloca el elemento <permission> en ambas aplicaciones (con los mismos valores), el orden de instalación ya no importará.

Su permiso solicitado es:

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

Y su registro dice:

 requires jp.co.abc.android.OMRSettings.permission.Access 

Usted debe decidir usar "OMRS" o "OMR" en ambos casos, una "S" es adicional.

  • Vibrar en la notificación push
  • Ejecutar un servicio con privilegios de root o agregar permisos con root
  • Detectando Android L Battery Saver
  • ¿Por qué otro servicio encima de IMarketBillingService?
  • ¿La actualización de una notificación elimina el estado de primer plano de un servicio?
  • Obtener contexto en un servicio
  • FirebaseApp con nombre no existe obtener error
  • Llamar setVolumeControlStream desde un servicio
  • Cómo agregar un servicio de sistema a Android Framework
  • El proceso del servicio se cancela después de que la aplicación se elimina de la bandeja de aplicaciones
  • Problemas con la vinculación al servicio en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.