1

我们的应用程序包含一个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)调用onGetRootonLoadChildren我们的MediaBrowserService. 为什么!?如果我允许,设备上没有任何可见的变化。我想我可能会看到一些三星小部件显示我们应用程序中的媒体信息……但我没有。

4

2 回答 2

1

我偶然发现了一个答案。出于只有三星员工可能知道的原因,MediaBrowserServiceCompat.onGetRoot包“com.android.bluetooth”的调用与MediaSessionCompat.setMediaButtonReceiver.

如果您以使用媒体按钮重新启动非活动媒体会话MediaSessionCompat的文档中解释的方式使用,则这些三星设备在将媒体按钮事件发送到配置的Android 尝试恢复时使用 com.android.blueooth 包进行查询最后一个活动的 MediaSession。MediaBrowserServiceCompat.onGetRootBroadcastReceiverMediaSessionCompat.setMediaButtonReceiver

onGetRoot如果由于您没有将 com.android.bluetooth 包列入白名单而导致调用返回 null,您的 BroadcastReceiver 将不会接收媒体按钮事件,并且不活动的媒体会话将不会恢复。您可以将包完全列入白名单并返回正常BrowserRoot的真实数据或返回一个空的BrowserRoot. 例如,new MediaBrowserServiceCompat.BrowserRoot("myroot", null)。三星似乎并没有实际使用根数据或进行后续调用,MediaBrowserServive.onLoadChildren因此您响应 com.android.bluetooth 发出的 onGetRoot 调用返回什么似乎并不重要,它只是不能null

同样,这种情况似乎是三星 6.0.1 Android 版本所独有的。我还没有遇到任何其他设备或任何其他三星 Android 版本通过 com.android.bluetooth 执行这个奇怪的调用。

于 2017-03-20T15:57:52.357 回答
0

这很可能与 Android 5.0 为用户和应用程序开发人员提供的新功能有关,其中包括最引人注目的新Android 5.0 API

媒体浏览中所述,

Android 5.0 引入了应用程序通过新的android.media.browse API浏览另一个应用程序的媒体内容库的能力。

对于最近的Android 5.0 行为更改,您应该仔细评估对您的应用程序可能产生的影响,以考虑给定的点,例如自定义权限。除此之外,还建议您立即检查您的应用程序,进行必要的调整,并尽快将更新版本发布给您的用户。

希望有帮助!

于 2016-09-13T13:13:04.700 回答