我有几个相同的应用程序,它们显示的数据和包名称不同。我决定让Android试一试,我的主要目标是开发一个Android Wear应用程序来显示我的每个手机应用程序的数据(可能有一个2d滑块,每个应用程序一行)。
想象一下,我有2个应用程序:
免费" com.company.appfree"
Pro" com.company.apppro"
和磨损应用
事实证明,我无法在Wear应用程序上获取手机应用程序发送的DataItems或消息,除非其软件包与其中一个手机应用程序包相同(" com.company.appfree"或" com.company.apppro")
我希望有人告诉我,如果有一种方法可以实现此通信而无需应用程序拥有相同的程序包。我真的需要一个单一的磨损应用程序,而不是多个。
感谢您的帮助!
答案 0 :(得分:1)
包裹名称必须与可穿戴应用和手机应用匹配才能使用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 :(得分:0)
据我所知,没有办法将数据发送到具有不同包的应用程序。此外,只有当包含应用程序包含相同的应用程序时,您的应用程序才会安装到可穿戴设备上,因此在您的情况下,只有一个应用程序可以包含常见的可穿戴部件。
我认为使两个应用程序与单个手表应用程序通信的唯一方法是将手表应用程序和相应的手持设备部件实现为一个单独的应用程序(此应用程序和手表应用程序将共享包名称,并且将能够彼此沟通)。 您在手机上的其他应用程序可以与此通信以将数据发送到手表。该通信可以通过广播或服务绑定来实现。 所以你将拥有以下结构:
com.company.wearservice
以及具有相同包的相应观看应用。com.company.app1
和com.company.app2
将数据发送到com.company.wearservice
,然后将其发送到可穿戴部分。