Невозможно запустить службу Намерение - PullRequest
6 голосов
/ 19 мая 2011

Я прочитал, вероятно, 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 ]

4 голосов
/ 19 мая 2011

Где находится класс связи?

В вашем манифесте вы объявляете службу с 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" />
0 голосов
/ 14 мая 2014

Кроме того, если ваша служба существует в проекте библиотеки, к которому вы обращаетесь, проверьте файл project.properties.

Вы должны добавить эту строку:

manifestmerger.enabled=true
0 голосов
/ 22 августа 2011

У меня была та же ошибка, и причина была в том, что служба не была определена в AndroidManifest.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...