我在Eclipse中有两个项目:服务和UI客户端。
在UI客户端的onCreate中我有:
startService(new Intent(this, ExampleService.class));
但是这个片段:
ExampleService.class
在运行时抛出NoClassDefFoundError异常。我已经安装了ExampleService.apk和ExampleUiClient.apk。项目编译,一切看起来都很好。我做错了什么?
是否可以从其他apk启动服务?
答案 0 :(得分:4)
如果您尝试使用其他软件包中的服务,则不能在Android示例中使用简单调用,因为您的第一个参数引用了当前软件包的上下文,根据定义,这是一个错误的查找位置
您必须创建intent,然后使用setClassName(String,String),其中参数是另一个包以及服务的完整名称。例如:
Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);
另请注意,这是一个简单的情况,它假设一个没有参数的默认操作 - 如果你没有任何参数,你还必须确保包含服务的包具有为服务设置的android:exported =“true” intent-filter声明,否则由于缺少权限,调用将失败。
答案 1 :(得分:3)
使用广播/广播接收器
答案 2 :(得分:0)
需要在客户端的AndroidManifest.xml中声明服务。