我的目标是制作 3 个 apk(用于非常具体的解决方案,而不是正常消费):
- 首先包含服务,该服务在启动时启动
- 使用此服务的客户端
- 使用此服务的另一个客户端
根据这个网站: http ://www.androidcompetencycenter.com/2009/06/start-service-at-boot/
我可以通过知道它的名字来启动一个服务。但是,这不起作用:
// works
context.startService(new Intent(context, MyServiceMessenger.class));
// does not work
Intent serviceIntent = new Intent();
serviceIntent.setAction(MyService.SERVICE_CLASS_NAME);
context.startService(serviceIntent);
针说MyService.SERVICE_CLASS_NAME
== mypackage.MyServiceMessenger
。
我的问题在于绑定 - 我需要绑定到课堂之外的服务。
// does not work
Intent intent = new Intent(context, MyService.SERVICE_CLASS_NAME);
// works
Intent intent = new Intent(context, MyServiceMessenger.class);
intent.putExtra("MESSENGER", messenger);
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
通过名称绑定到服务时,myserviceConnection
根本没有被使用,也无法向服务发送信息。
我错过了什么?
编辑1:
我在清单中缺少一个导出。您需要“导出”它,并为其命名。我也同意了。我在意图中使用的字符串与 @@ 中的字符串相同。
<permission android:name="MyPermission"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="dangerous" />
<uses-permission android:name="MyPermission" />
<application ... >
<service
android:name="service.MyServiceMessenger"
android:exported="true"
android:permission="MyPermission" >
<intent-filter>
<action android:name="**platinum8.service.P2PServiceMessenger**"></action>
</intent-filter>
</service>
</application>
编辑2:
我添加了一个与服务名称相同的意图过滤器,现在我的代码似乎可以工作了。