我们的应用程序包含一个MediaBrowserService
并使用白名单来限制谁可以查询该服务。它通常用于允许 Android Auto 和 Android Wear 向我们的应用查询音频内容。据我所知,这仍然是推荐的方法。例如,如此 Google 示例应用程序所示:MediaBrowserService 示例应用程序
我们的应用会报告尝试查询我们MediaBrowserService
但不在白名单上的包名称。我们经常收到有关“com.android.bluetooth”试图调用我们的服务但被拒绝的报告。
我对这些报告感到困惑。我们从未在我们自己的测试设备上看到过来自此软件包的此类调用。我之前尝试询问用户是否有可能显示音频信息的蓝牙设备遇到了困惑......所以似乎Android本身正在拨打这些电话?
有人遇到过这种情况么?这种白名单方法需要验证特定的签名证书。com.android.bluetooth 是否有一致的签名证书可以用来将此包添加到白名单?
更新 1:
从我们收到的用户报告来看,这似乎是三星 Android 6.0.1 独有的现象。它的第一份报告出现在 2016 年 3 月 13 日,整个夏天都有稳定的涓涓细流。
这是报告此问题的模型的部分列表。他们都拥有Android 6.0.1。这可能与他们基于 Tizen 的 Galaxy Gear 手表有关吗?
- 银河注 4 (SM-N910R4)
- Galaxy Note 4 (SAMSUNG-SM-N910A)
- 银河注 5 (SM-N920V)
- 银河 S5 (SM-G900V)
- Galaxy S5 主动式 (SAMSUNG-SM-G870A)
- 银河 S6 (SM-G920R7)
- 银河 S6 (SAMSUNG-SM-G890A)
- 银河 S7 边缘 (SM-G935V)
- 银河 S7 边缘 (SAMSUNG-SM-G935A)
- 银河 J7 (SM-J700T1)
更新 2:
我终于在 6.0.1 的 Galaxy S6 Edge 上重现了这种情况。只需打开设备上的蓝牙即可。如果打开,甚至没有配对或连接,当我开始在我们的应用程序“com.android.bluetooth”(UID 1002)调用onGetRoot
和onLoadChildren
我们的MediaBrowserService
. 为什么!?如果我允许,设备上没有任何可见的变化。我想我可能会看到一些三星小部件显示我们应用程序中的媒体信息……但我没有。