Отказ в разрешении, когда следует вызывать onMessageReceived

Я следую этому руководству и получил WearableListenerService. Я просто реализовал метод onMessageReceived и больше ничего не менял.

Запись на сервис выглядит так:

<service android:name=".WearableRemoteCommandListener"
    android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="com.google.android.gms.wearable.BIND_LISTENER"></action>
    </intent-filter>
</service>

Элемент приложения содержит этот элемент метаданных:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

Но когда я отправляю сообщение на носимое устройство, я получаю это исключение безопасности:

06-08 21:15:41.337      579-842/? W/ActivityManager﹕ Permission Denial: Accessing service ComponentInfo{net.bplaced.schlingel.wearabletest1/net.bplaced.schlingel.anmosela.WearableRemoteCommandListener} from pid=822, uid=10009 requires android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
06-08 21:15:41.437      822-940/? W/WearableService﹕ ensureBindStarted: Permission denied connecting to net.bplaced.schlingel.anmosela.WearableRemoteCommandListener
    java.lang.SecurityException: Not allowed to bind to service Intent { act=com.google.android.gms.wearable.BIND_LISTENER cmp=net.bplaced.schlingel.wearabletest1/net.bplaced.schlingel.anmosela.WearableRemoteCommandListener }
            at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1793)
            at android.app.ContextImpl.bindService(ContextImpl.java:1757)
            at android.content.ContextWrapper.bindService(ContextWrapper.java:539)
            at com.google.android.gms.wearable.service.t.b(SourceFile:1157)
            at com.google.android.gms.wearable.service.t.a(SourceFile:1099)
            at com.google.android.gms.wearable.service.t.handleMessage(SourceFile:1077)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.os.HandlerThread.run(HandlerThread.java:61)

Я попытался добавить экспортированный и включенный атрибут, перезапустил носимое устройство, но исключение повторилось. Не хватает разрешения? Что не так с моей настройкой?


person schlingel    schedule 08.06.2015    source источник
comment
Вы можете избавиться от этой строки android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" и запустить ее снова?   -  person Blackbelt    schedule 08.06.2015
comment
В этом была проблема. Теперь это работает. Вы должны добавить свой комментарий в качестве ответа, чтобы я мог его принять.   -  person schlingel    schedule 09.06.2015


Ответы (1)


избавиться от этой строки

android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"

из документации.

Должен быть обязательным для NotificationListenerService, чтобы гарантировать, что только система может привязаться к нему.

person Blackbelt    schedule 09.06.2015