Отказ в разрешении при вызове 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)
Я попытался добавить экспортированный и включенный атрибут, перезапустил носимый, но исключение повторяется снова. Отсутствует ли разрешение? Что не так с моей настройкой?
1 ответ
Решение
Избавиться от этой линии
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
из документации
Должен требоваться NotificationListenerService, чтобы гарантировать, что только система может связываться с ним.