No se puede encontrar la clase de actividad explícita {}; Has declarado esta actividad en tu AndroidManifest.xml

Estoy intentando descomprimir algunos archivos en segundo plano, así que utilizo IntentService como en el tutorial de google. Mi clase de servicio declarada en AndroidManifest es la siguiente:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.osmdroid"> <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" /> <application android:configChanges="orientation|screenSize|keyboardHidden" android:hardwareAccelerated="true" android:icon="@drawable/ecn_icon" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MapActivity" android:icon="@drawable/ecn_icon" android:label="test" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SettingsActivity" android:label="@string/title_activity_settings"> </activity> <service android:name=".UnZipService" android:exported="false"/> </application> 

En actividad, tengo

 IntentFilter intentFilter = new IntentFilter(DownloadManager .ACTION_DOWNLOAD_COMPLETE); receiverDownloadComplete = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { long reference = intent.getLongExtra(DownloadManager .EXTRA_DOWNLOAD_ID, -1); if (myDownloadReference == reference) { ... switch (status) { case DownloadManager.STATUS_SUCCESSFUL: Intent mServiceIntent = new Intent(context, UnZipService.class); mServiceIntent.setData(Uri.parse(savedFilePath)); startActivity(mServiceIntent); break; ... } cursor.close(); } } }; registerReceiver(receiverDownloadComplete, intentFilter); 

Y servicio aquí:

 public class UnZipService extends IntentService { public UnZipService() { super("UnZipService"); } @Override protected void onHandleIntent(Intent workIntent) { String dataString = workIntent.getDataString(); Log.v("IntentURI", dataString); Toast.makeText(this, "Installing....", Toast.LENGTH_SHORT).show(); } 

Debería mostrar tostadas sólo para la prueba, pero siempre obtengo un error:

  01-29 19:08:25.740 15521-15521/org.osmdroid E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=org.osmdroid (has extras) } in org.osmdroid.SettingsActivity$1@21292650 at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:5147) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method) Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {org.osmdroid/org.osmdroid.UnZipService}; have you declared this activity in your AndroidManifest.xml? at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) at android.app.Activity.startActivityForResult(Activity.java:3404) at android.app.Activity.startActivityForResult(Activity.java:3365) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817) at android.app.Activity.startActivity(Activity.java:3600) at android.app.Activity.startActivity(Activity.java:3568) at org.osmdroid.SettingsActivity$1.onReceive(SettingsActivity.java:148) at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:758) at android.os.Handler.handleCallback(Handler.java:725)            at android.os.Handler.dispatchMessage(Handler.java:92)            at android.os.Looper.loop(Looper.java:150)            at android.app.ActivityThread.main(ActivityThread.java:5147)            at java.lang.reflect.Method.invokeNative(Native Method)            at java.lang.reflect.Method.invoke(Method.java:511)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)            at dalvik.system.NativeStart.main(Native Method) 

Ambos (clase y actividad) en la misma carpeta (org.osmdroid). Parece que los caminos están bien, pero el problema aparece y no tengo más ideas …

Estás iniciando un servicio como actividad

Cambio

 Intent mServiceIntent = new Intent(context, UnZipService.class); mServiceIntent.setData(Uri.parse(savedFilePath)); startActivity(mServiceIntent); 

a

 Intent mServiceIntent = new Intent(context, UnZipService.class); mServiceIntent.setData(Uri.parse(savedFilePath)); startService(mServiceIntent); // Only this line is changed 
  • Cómo convertir milisegundos a formato de fecha en android?
  • ANDROID: Acceso a las Acciones de CIFS en Java
  • ¿Puedo comprobar si dos aplicaciones de Android están firmadas con la misma clave?
  • Cómo escuchar eventos de GC en Android
  • El número de llamada desde el teclado de marcación devuelve la advertencia: "Llamada requiere permiso que puede ser rechazado por el usuario"
  • ¿Es imposible hacer un juego Android sin tartamudear? Me estoy volviendo loco aqui
  • Establecer permanentemente el título DatePickerDialog
  • ¿Cómo inicio un servicio desde mi Interactor usando el patrón MVP en android?
  • Serialización y subclases
  • Cómo cambiar las pestañas de forma programática mediante buttonclick en Android
  • Adquiere el valor devuelto de PhoneGap Plugin
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.