Android 使用不同包的 DataApi

Android wear DataApi with different package

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

假设我有 2 个应用程序:

以及穿戴应用程序

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

我希望有人能告诉我是否有一种方法可以在不需要应用程序具有相同包的情况下实现这种通信。我真的需要一个单一的磨损应用程序,而不是多个。

感谢您的帮助!

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

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

  1. com.company.wearservice与对应的watch app同包
  2. com.company.app1com.company.app2 将数据发送到 com.company.wearservice,后者将它们发送到可穿戴部分。

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

然而,这并不意味着你根本无法实现你想要的。您可以通过以下方式设置您的应用程序:

com.company.appfree 在 phone

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

com.company.apppro 在 phone

现在,添加一个沟通渠道:

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

然后,只在phone上,在com.company.appfree上加一个ContentProvider,并用权限保护它(做权限保护级别的签名,更多的在这里:http://developer.android.com/guide/topics/manifest/permission-element.html).现在您有以下沟通渠道:

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