Android 佩戴 DataApi 与不同的包



>我有几个相同的应用程序,只是它们显示的数据和包名称不同。我决定尝试一下Android Wear,我的主要目标是开发一个Android Wear应用程序来显示我的每个手机应用程序的数据(可能带有2d滑块,每个应用程序一行)。

假设我有 2 个应用程序:

  • 免费 "com.company.appfree"

  • Pro "com.company.apppro"

和磨损应用程序

  • "com.company.appwear"

事实证明,我无法在 Wear 应用程序上获取我的手机应用程序发送的数据项或消息,除非它的包与其中一个手机应用程序包("com.company.appfree"或"com.company.apppro")相同。

我想有人告诉我是否有办法实现这种通信,而无需应用程序具有相同的包。我真的需要一个 wear 应用程序,而不是多个应用程序。

感谢您的帮助!

程序包名称必须匹配,可穿戴应用和手机应用才能使用 DataApi 进行通信。在您的设置中,您将无法通信。

但是,这并不意味着您根本无法实现自己想要的。您可以通过以下方式设置应用:

com.company.appfree在电话上

可穿戴设备上的com.company.appfree

在电话com.company.apppro

现在,添加一个通信通道:

com.company.appfree (phone) <- DataApi -> com.company.appfree (wearable)

然后,仅在手机上,添加一个ContentProvider com.company.appfree并使用权限对其进行保护(进行权限保护级别签名,有关此内容的更多信息:http://developer.android.com/guide/topics/manifest/permission-element.html)。现在您有以下沟通渠道:

com.company.apppro (phone) <- ContentProvider -> com.company.appfree (phone) <- DataApi -> com.company.appfree (wearable)

据我所知,没有办法将数据发送到具有不同包的应用程序。此外,仅当包含的应用程序具有相同的包时,您的应用程序才会安装到可穿戴设备,因此在您的情况下,只有一个应用程序能够包含常见的可穿戴部件。

我认为使两个应用程序与单个手表应用程序通信的唯一方法是将手表应用程序和相应的手持部分实现为一个单独的应用程序(此应用程序和手表应用程序将共享包名称并能够相互通信)。手机上的其他应用可以与此应用通信,以将数据发送到手表。此通信可以通过广播或服务绑定来实现。因此,您将具有以下结构:

  1. com.company.wearservice和相应的手表应用程序具有相同的包。
  2. com.company.app1com.company.app2将数据发送到com.company.wearservice,后者将它们发送到可穿戴部件。

最新更新