Наше приложение содержит MediaBrowserService
и использует белый список, чтобы ограничить, кто может запрашивать службу. Обычно он используется, чтобы разрешить Android Auto и Android Wear запрашивать у нашего приложения аудиоконтент. Насколько я знаю, это все еще рекомендуемый подход. Например, как показано в этом примере приложения Google: пример приложения MediaBrowserService
Наше приложение сообщает имена пакетов, которые пытаются запросить наш MediaBrowserService
, но НЕ находятся в белом списке. Мы довольно регулярно получаем сообщения о том, что "com.android.bluetooth" пытался позвонить в нашу службу и получил отказ.
Я озадачен этими сообщениями. Мы никогда не видели таких вызовов из этого пакета на наших собственных тестовых устройствах. Мои предыдущие попытки спросить пользователя, есть ли у него устройство Bluetooth, которое может отображать аудиоинформацию, были встречены с замешательством... так что, похоже, сам Android делает эти звонки?
кто-нибудь еще сталкивался с этим? Этот подход с использованием белого списка требует проверки определенных сертификатов подписи. Есть ли у com.android.bluetooth согласованный сертификат подписи, который можно использовать для добавления этого пакета в белый список?
ОБНОВЛЕНИЕ 1:
Глядя на отчеты, которые мы получили от пользователей, кажется, что это исключительно феномен Samsung Android 6.0.1. Первое сообщение об этом появилось 13 марта 2016 года, и все лето шел постоянный поток.
Вот неполный список моделей, которые сообщили об этой проблеме. Все они имели Android 6.0.1. Может ли это быть связано с их часами Galaxy Gear на базе Tizen?
- Галактика Примечание 4 (SM-N910R4)
- Galaxy Note 4 (SAMSUNG-SM-N910A)
- Galaxy Note 5 (SM-N920V)
- Галакси С5 (SM-G900V)
- Galaxy S5 активный (SAMSUNG-SM-G870A)
- Галактика С6 (SM-G920R7)
- Галактика S6 (SAMSUNG-SM-G890A)
- Край Galaxy S7 (SM-G935V)
- Край Galaxy S7 (SAMSUNG-SM-G935A)
- Галактика J7 (SM-J700T1)
ОБНОВЛЕНИЕ 2:
Наконец-то я воспроизвел ситуацию на Galaxy S6 Edge с 6.0.1. Bluetooth на устройстве просто должен быть включен. Если он включен, даже без сопряжения или подключения, когда я начинаю воспроизводить аудио в нашем приложении, «com.android.bluetooth» (UID 1002) вызывает onGetRoot
и onLoadChildren
на нашем MediaBrowserService
. ЗАЧЕМ!? Если я позволю, на устройстве ничего не изменится. Я думал, что увижу какой-нибудь виджет Samsung, представляющий мультимедийную информацию из нашего приложения... но я не вижу.