J'ai le même problème décrit ici mais je ne comprends pas ce qui ne va pas.
Mon problème est: Impossible de démarrer le service Intention {act = .connections.MoodyService} U = 0: introuvable
[~ # ~] modifier [~ # ~] J'ai changé mon package de connexions en service dans le code source, désolé pour la confusion
Mon manifest.xml
<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>
le service est le package et MoodyService est le nom de la classe
Ma classe de service
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();
}
}
}
Et dans mon intention principale.
Intent start = new Intent(".service.MoodyService");
this.startService(start);
et a également essayé
Intent intent = new Intent(this, MoodyService.class);
this.startService(intent);
et essayé avec le chemin complet
<service
Android:name="com.example.moody.service.MoodyService"
Android:icon="@drawable/ic_launcher"
Android:label="@string/moody_service" >
Résolu
J'ai supprimé la période au début du nom du package dans le manifeste et cela a fonctionné, en d'autres termes:
Cela ne fonctionne pas:
.yourPackage.YourClass
Mais cela fonctionne:
yourPackage.YourClass
Et pour l'essentiel:
Intent intent = new Intent(this, MoodyService.class);
this.startService(intent);
Mais cela va à l'encontre de ce qui est écrit en la documentation :
Android: nom Le nom de la sous-classe de service qui implémente le service. Il doit s'agir d'un nom de classe complet (tel que "com.example.project.RoomService"). Cependant, en raccourci, si le premier caractère du nom est un point (par exemple, ".RoomService"), il est ajouté au nom du package spécifié dans l'élément. Une fois que vous avez publié votre application, vous ne devez pas modifier ce nom (sauf si vous avez défini Android: exports = "false").
Il n'y a pas de défaut. Le nom doit être spécifié.
Le service doit également être inclus dans le Manifest:
<service Android:name="com.x.x.serviceclass"></service>
Je ne sais pas pourquoi vous utilisez ce nom de type package pour votre nom de service, mais pourquoi n'utilisez-vous pas le nom de classe pour démarrer le service?
Intent intent = new Intent(context, YourService.class);
context.startService(intent);
Je pense que le nom du package manifeste pour le service est incorrect car vous avez dit que le nom de votre package est connections
, il devrait donc être comme ceci
Android:name ="connections.MoodyService"
ou
Android:name="com.example.moody.connections.MoodyService"
invoquer le service faire
Intent intent = new Intent(this, MoodyService.class);
this.startService(intent);
Assurez-vous d'avoir déclaré votre service dans le fichier manifeste.
<service
Android:name=".MyService"
Android:enabled="true" >
</service>
et essayez d'écrire getApplicationContext () au lieu du mot-clé "this"
startService(new Intent(getApplicationContext(), MoodyService.class));
mon service est dans le package "service" et mon service manifeste est comme ceci;
<service
Android:name="service.TimerService"
Android:exported="false" >
</service>
Avez-vous créé un constructeur vide dans le service?
Sinon, essayez ça.
Je ne sais pas non plus si vous pouvez utiliser l'intention comme ça. Vous pouvez essayer la construction "new Inten (this, MoodyService.class)".