无法启动服务Intent

时间:2011-05-19 01:54:47

标签: android service

我在这个问题上已经阅读了大约100个问题和答案,但我似乎无法让这个工作。我正在尝试从Service开始Activity。我的清单文件似乎没问题,我启动Service的方式似乎也是正确的。 LogCat中显示以下错误:

ActivityManager(1296): Unable to start service Intent
{ cmp=com.exercise.AndroidClient/com.client.Communication }: not found

我正在尝试通过在Activity

中调用此服务来启动该服务
startService(new Intent(getApplicationContext(), Communication.class));

Service如下:

public class Communication extends Service {
    public Communication() {
        super();
    }
    @Override
    public void onCreate() {
        super.onCreate();
        Log.i("Service", "Created service");
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i("Service", "onStartCommand called");
        return START_STICKY;
    }
    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
}

我的清单文件中的条目是:

<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.exercise.AndroidClient" android:versionCode="1"
    android:versionName="1.0">

    <application android:icon="@drawable/sms" android:label="@string/app_name" >

        <activity> ... </activity>

        <service android:enabled="true" android:name=".Communication" />

    </application>
</manifest>

任何建议都非常适合。

3 个答案:

答案 0 :(得分:4)

沟通课在哪里?

在您的清单中,您使用android:name=".Communication"声明服务,这意味着您的服务类应位于com.exercise.AndroidClient.Communication

检查包裹是否正确。注意“。” (点)指的是包的根(即清单中声明的​​包)。因此,例如,如果您的软件包为com.exercise.AndroidClient且服务类位于com.exercise.AndroidClient.services.Communication下,则需要声明此服务:

<service android:enabled="true" android:name=".services.Communication" />

或指定完整的包裹:

<service android:enabled="true" android:name="com.exercise.AndroidClient.services.Communication" />

答案 1 :(得分:0)

我遇到了同样的错误,原因是,AndroidManifest.xml中没有定义该服务。

答案 2 :(得分:0)

此外,如果您的服务恰好存在于您所引用的库项目中,请检查您的project.properties文件。

你必须添加这一行:

manifestmerger.enabled=true