Android - Bind to a service from an other app

被刻印的时光 ゝ 提交于 2019-12-23 03:30:27

问题


I have written 2 applications. MyServiceApplication and MyActivityApplication. On boot I launch MyService which runs as a remote service. I want MyActivityApplication to communicate with it however MyActivityApplication does not have access to MyServiceApplication classes. All the examples I see online band an activity to a service in the following way:

bindService(new Intent(Binding.this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);

My Application needs to communicate with MyService. The code is based off Google's MessengerService example.

The trouble as I mentioned earlier is that the service I'm trying to bind to was started by an other application whose sole purpose is to start this service.

Is there a way to do this where I can keep both applications independent? The idea is that I will have a second, third and fourth application all of whom may communicate with the same service.


回答1:


You should have a shared library between your service and application that defines the interface you use to communicate with the bound service.




回答2:


UPDATE:
This solution and code example was valid at the time it was written at: 2015
Please look for other solution relevant for this day.

ORIGINAL ANSWER:
You can define an intent-filer for your service with a specific action and bind to this service with intent assigned to this action.

MyServiceApplication:

<service android:name=".MyService">
      <intent-filter>
        <action android:name="com.some.action.NAME" />
      </intent-filter>
</service>

MyActivityApplication:

bindService(new Intent("com.some.action.NAME"), serviceConnection, Context.BIND_AUTO_CREATE);


来源:https://stackoverflow.com/questions/9988359/android-bind-to-a-service-from-an-other-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!