Не удалось запустить службу. Цель: не найден.
У меня такая же проблема, описанная здесь, но я не могу понять, что не так.
Моя проблема: Невозможно запустить сервис 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" >
Ответы
Ответ 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");