因此,经过大量阅读和查看三星文档和论坛的各个角落后,我设法找到了有关如何从 Accessory SDK 2.2.2 正确升级到 2.3.0 的重大更改和解决方案。
首先,Accessory SDK 2.3.0 有两个发行说明部分:一个以 2015 年 10 月 29 日为发布日期,另一个为 2015 年 9 月 3 日。我比较了组成 SDK 的实际 jar,它们似乎相同,让我猜测它可能只是更新的文档和/或示例。仍然......两个“版本”具有相同的版本......来吧三星!
无论如何,第二组发行说明提到了这一点:
初始化附件和附件文件传输时将需要新的意图操作。有关详细信息,请参阅编程指南。
浏览这个“编程指南”——顺便说一句,它似乎在两个 2.3.0 版本之间的某个地方进行了更新——我注意到第 3.3.1 节(第 19 页)中的以下注释:
笔记。操作名称从 2.3.0 更改。为了向后兼容,旧的操作将持续支持一段时间。
此外,它似乎属于这个代码片段:
<receiver android:name="com.samsung.android.sdk.accessory.ServiceConnectionIndicationBroadcastReceiver">
<intent-filter>
<action android:name="com.samsung.accessory.action.SERVICE_CONNECTION_REQUESTED"/>
</intent-filter>
</receiver>
<receiver android:name="com.samsung.android.sdk.accessory.RegisterUponInstallReceiver">
<intent-filter>
<action android:name="com.samsung.accessory.action.REGISTER_AGENT"/>
</intent-filter>
</receiver>
由于它再次提到了这些操作,我将它们与我的应用程序清单中的操作进行了比较,果然,还是有区别的。我对这些接收者的行动说:
<action android:name="android.accessory.service.action.ACCESSORY_SERVICE_CONNECTION_IND" />
<action android:name="android.accessory.device.action.REGISTER_AFTER_INSTALL" />
将动作更新为新动作后com.samsung.**
,一切又开始工作了!
总结一下:发布说明中声称“为了向后兼容,旧操作将在一段时间内持续支持”的声明根本不正确。不再支持旧的操作,导致当您从 2.2.2 更新到 2.3.0 时会出现中断。将动作更新为新动作可以解决所有问题。
更新:看来我不是唯一一个得出这个结论的人,在三星的一块板上查看这个线程。