从其他apk启动服务 - 抛出NoClassDefFoundError异常

时间:2010-07-31 18:35:53

标签: android

我在Eclipse中有两个项目:服务和UI客户端。

在UI客户端的onCreate中我有:

startService(new Intent(this, ExampleService.class));

但是这个片段:

ExampleService.class

在运行时抛出NoClassDefFoundError异常。我已经安装了ExampleService.apk和ExampleUiClient.apk。项目编译,一切看起来都很好。我做错了什么?

是否可以从其他apk启动服务?

3 个答案:

答案 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中声明服务。