android - saber - Imposible iniciar el servicio Intención: no encontrada
java android service (8)
¿Creó un constructor vacío en el servicio?
Si no, intenta eso.
También es incierto si puede usar la intención de esa manera. Podrías probar la nueva construcción ''Inten (this, MoodyService.class)''.
Tengo el mismo problema descrito here pero no puedo entender lo que está mal.
Mi problema es: no se puede iniciar el servicio Intención {act = .connections.MoodyService} U = 0: no encontrado
EDITAR He cambiado mi paquete de conexiones a servicio en el código fuente, disculpe la confusión
Mi manifiesto `
<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>
el servicio es el paquete y MoodyService es el nombre de la clase
Mi clase de servicio
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();
}
}
}
Y en mi principal.
Intent start = new Intent(".service.MoodyService");
this.startService(start);
y también intenté
Intent intent = new Intent(this, MoodyService.class);
this.startService(intent);
y probado con el camino completo
<service
android:name="com.example.moody.service.MoodyService"
android:icon="@drawable/ic_launcher"
android:label="@string/moody_service" >
¿Intentó usar el android: nombre que especificó en el Manifiesto?
Manifiesto de Android:
<service
android:enabled="true"
android:name="UploadService" />
La llamada sería algo así:
Intent intent = new Intent("UploadService");
Asegúrese de haber declarado su servicio en el archivo de manifiesto.
<service
android:name=".MyService"
android:enabled="true" >
</service>
e intente escribir getApplicationContext () en lugar de "this" palabra clave
startService(new Intent(getApplicationContext(), MoodyService.class));
Creo que el nombre del paquete manifiesto para el servicio es incorrecto ya que dijiste que el nombre de tu paquete son connections
por lo que debería ser así
android:name ="connections.MoodyService"
o
android:name="com.example.moody.connections.MoodyService"
invocar servicio hacer
Intent intent = new Intent(this, MoodyService.class);
this.startService(intent);
El servicio también debe incluirse en el Manifiesto :
<service android:name="com.x.x.serviceclass"></service>
No sé por qué está usando ese nombre de paquete para su nombre de servicio, pero ¿por qué no usa el nombre de clase para comenzar el servicio?
Intent intent = new Intent(context, YourService.class);
context.startService(intent);
mi servicio está en el paquete de "servicio" y mi servicio manifesto enrty así;
<service
android:name="service.TimerService"
android:exported="false" >
</service>
Resuelto
Eliminé el período al principio del nombre del paquete en el manifiesto y funcionó, en otras palabras:
Esto no funciona:
.yourPackage.YourClass
Pero esto funciona:
yourPackage.YourClass
Y en general:
Intent intent = new Intent(this, MoodyService.class);
this.startService(intent);
Pero va en contra de lo que está escrito en la documentación :
android: name El nombre de la subclase de Servicio que implementa el servicio. Este debe ser un nombre de clase completo (como, por ejemplo, "com.example.project.RoomService"). Sin embargo, como una abreviatura, si el primer carácter del nombre es un punto (por ejemplo, ".RoomService"), se agrega al nombre del paquete especificado en el elemento. Una vez que publique su aplicación, no debe cambiar este nombre (a menos que haya configurado android: exported = "false").
No hay un defecto El nombre debe ser especificado.