Подтвердить что ты не робот

Не удалось запустить службу. Цель: не найден.

У меня такая же проблема, описанная здесь, но я не могу понять, что не так.

Моя проблема: Невозможно запустить сервис Intent {act =.connections.MoodyService} U = 0: не найден

ИЗМЕНИТЬ Я изменил свой пакет из подключений к сервису в исходном коде, извините за путаницу

Мой манифест

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.moody"
android:installLocation="auto"
android:versionCode="0"
android:versionName="0.6.7 alpha" >

<uses-sdk
    android:maxSdkVersion="18"
    android:minSdkVersion="14"
    android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
    android:allowBackup="true"
    android:allowClearUserData="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="activities.MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="activities.Menu_esq"
        android:label="@string/title_activity_menu_esq" >
    </activity>
    <activity
        android:name="activities.BaseActivity"
        android:label="@string/title_activity_base" >
    </activity>
    <activity
        android:name="activities.MainView"
        android:label="@string/title_activity_main_view" >
    </activity>
    <activity
        android:name="activities.LoginActivity"
        android:label="@string/app_name"
        android:noHistory="true"
        android:windowSoftInputMode="adjustResize|stateVisible" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.moody.LeftActivity"
        android:label="@string/title_activity_left" >
    </activity>
    <activity
        android:name="com.example.moody.RightActivity"
        android:label="@string/title_activity_right" >
    </activity>
    <activity
        android:name="activities.UserDetailsActivity"
        android:label="@string/title_activity_user_details" >
    </activity>
    <activity
        android:name="fragments.TopicsPreview"
        android:label="@string/title_activity_copy_of_topics_preview" >
    </activity>
    <activity android:name="activities.Loading" >
    </activity>

    <service
        android:name=".service.MoodyService"
        android:icon="@drawable/ic_launcher"
        android:label="@string/moody_service" >
    </service>
</application>

служба - это пакет, а MoodyService - это имя класса

Мой класс обслуживания

public class MoodyService extends Service {

public MoodyService() {
    // TODO Auto-generated constructor stub
}

private boolean isRunning = false;
Object getContent;

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub

    return null;
}

@Override
public void onCreate() {
    super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    // Announcement about starting
    Toast.makeText(this, "Starting the Demo Service", Toast.LENGTH_SHORT)
            .show();

    // Start a Background thread
    isRunning = true;
    Thread backgroundThread = new Thread(new BackgroundThread());
    backgroundThread.start();

    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();

    // Stop the Background thread
    isRunning = false;

    // Announcement about stopping
    Toast.makeText(this, "Stopping the Demo Service", Toast.LENGTH_SHORT)
            .show();
}

private class BackgroundThread implements Runnable {
    int counter = 0;

    public void run() {
        try {
            counter = 0;
            while (isRunning) {
                System.out.println("" + counter++);
                new Contents().getAll(getResources(),
                        getApplicationContext());
                Thread.currentThread().sleep(5000);
            }

            System.out.println("Background Thread is finished.........");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

И в моем основном.

Intent start = new Intent(".service.MoodyService");
        this.startService(start);

, а также попробовал

Intent intent = new Intent(this, MoodyService.class);
        this.startService(intent);

и попробовал с полным путем

 <service
    android:name="com.example.moody.service.MoodyService"
    android:icon="@drawable/ic_launcher"
    android:label="@string/moody_service" >
4b9b3361

Ответ 1

решаемые

Я удалил период в начале имени пакета в манифесте, и он сработал, другими словами:

Это не работает:

.yourPackage.YourClass

Но это работает:

 yourPackage.YourClass

И в основном:

Intent intent = new Intent(this, MoodyService.class);
        this.startService(intent);

Но это противоречит тому, что написано в документации:

android: name Имя подкласса Service, реализующего службу. Это должно быть полное имя класса (например, "Com.example.project.RoomService" ). Однако, как сокращение, если первым символом имени является период (например, ".RoomService" ), он добавляется к имени пакета, указанному в элемент. После публикации приложения вы не должны изменять это name (если вы не настроили android: exported = "false" ).

По умолчанию нет. Имя должно быть указано.

Ответ 2

Услуга также должна быть включена в Манифест:

<service android:name="com.x.x.serviceclass"></service>

Ответ 3

Я не знаю, почему вы используете это имя в виде пакета для своего имени службы, но почему бы вам не использовать имя класса для запуска службы?

Intent intent = new Intent(context, YourService.class);
context.startService(intent);

Ответ 4

Я думаю, что в имени пакета манифеста для сервиса неверно, поскольку вы сказали, что ваше имя пакета connections, поэтому должно быть как

  android:name ="connections.MoodyService"

или

  android:name="com.example.moody.connections.MoodyService"

для вызова службы do

  Intent intent = new Intent(this, MoodyService.class);
    this.startService(intent);

Ответ 5

Убедитесь, что вы указали свою службу в файле манифеста.

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

и попробуйте написать getApplicationContext() вместо "this" ключевое слово

startService(new Intent(getApplicationContext(), MoodyService.class));

Ответ 6

моя служба находится в пакете "service" и в моем явном сервисе enpty:

     <service
        android:name="service.TimerService"
        android:exported="false" >
    </service>

Ответ 7

Создал ли пустой конструктор в службе?

Если нет, попробуйте это.

Также неясно, можете ли вы использовать это намерение. Вы можете попробовать создать новую конструкцию Inten (это, MoodyService.class).

Ответ 8

Вы пытались использовать андроид: имя, указанное в манифесте?

Android Manifest:

<service 
             android:enabled="true" 
             android:name="UploadService" />

Вызов будет выглядеть следующим образом:

Intent intent = new Intent("UploadService");