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 instanciar un oyente por reflexión en Android
  • Excepción de cadena de conversión a fecha
  • ¿Puedo definir un filtro de intenciones dinámico en mi aplicación de Android?
  • FindViewById (int) devuelve null en un botón específico en Android 3.1 otras versiones su multa
  • ¿Valores de diálogo y edittext de Android?
  • Error "no se pudo obtener el modelo de tipo 'BasicIdeaProject' utilizando Gradle distribución" en Windows?
  • ¿Cómo puedo usar Android con Java y un núcleo hecho con Scala?
  • Android Inicia la intención del calendario con la hora de inicio y finalización
  • Finalizar todas las actividades anteriores
  • Android: Solicitar al usuario que guarde los cambios cuando se pulsa el botón Atrás
  • Android (JSONObject) ¿Cómo puedo recorrer un objeto JSON plano para obtener cada clave y cada valor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.