android.content.ActivityNotFoundException:

Obtengo esta excepción mientras trato de llamar a una actividad de otra. La excepción completa es

android.content.ActivityNotFoundException: no se puede encontrar la clase de actividad explícita {com.xy / com.xyclass};

Estoy haciendo un intent.setClass("com.xy","com.xyclassName") donde className es el nombre de mi clase de actividad y com.xy es el paquete en el que reside.

Mi AndroidManifest.xml tiene el siguiente contenido:

  

¿Me estoy perdiendo algo?

Tal vez deba verificar que agregó la nueva actividad al archivo manifest.xml

Ejemplo:

   

Si otras personas encuentran algo similar y llegan a esta publicación, un problema que tuve podría ahorrarle algo de tiempo. Puede no estar relacionado con el problema del OP pero def relacionado con la excepción ActivityNotFound.

Intentaba cargar una actividad usando:

 Intent intent = new Intent( this, class ); 

Sin embargo, continuamente seguí obteniendo la ActivityNotFoundException a pesar de que había verificado y vuelto a verificar el código varias veces.

Esta excepción que recibía no estaba causada por la intención sino por algún código que estaba ejecutando dentro de la actividad cargada arrojando una RuntimeException . (mi problema fue causado por Typeface.createFromAsset() )

Es posible que se encuentre con una RuntimeException similar en su actividad.

Para ver si este es el caso, coloque su código de intención en los bloques de captura de prueba. Al igual que:

 try { /* your code */ ... } catch ( ActivityNotFoundException e) { e.printStackTrace(); } 

Ejecute nuevamente su aplicación y revise su LogCat, si es el mismo problema, obtendrá una RuntimeException con una entrada “Causada por:” que apunta a su problema real.

Pasé una buena hora tratando de resolver esto. Con suerte, esto puede salvar a alguien en algún momento.

La actividad que está llamando debe aparecer no solo en el Manifiesto para su propio paquete, sino también en el paquete Manifiesto para el LLAMADO.

Elimine su actividad del manifiesto y luego agréguelo nuevamente. Este tipo no escribir escribe el XML directamente. En su lugar, vaya a Application > Application nodes > add , elija la Actividad y busque el origen del archivo.

Esto funcionó para mí.

intent.setClass toma los parámetros como “Contexto del paquete” y “Clase”. un ejemplo sería:

 intent.setClass(CurrentActivity.this, TargetActivity.class); 

también necesita verificar si la actividad está registrada en el archivo de manifiesto.

Agregué una nueva actividad y la definí en manifest.xml, pero todavía recibía el error “No se puede encontrar la clase de actividad explícita”. Estoy usando Eclipse. La solución para mi problema fue “limpiar” el proyecto. Desde el menú principal en Eclipse: Proyecto | Limpiar … A continuación, seleccione su proyecto y límpielo.

Oye, necesitas usar otra forma de constructor de intenciones. Esto seguramente resolverá su problema en un segundo:

Ejemplo:

 Intent inte=new Intent(getBaseContext(),"your class name with .class extension "); startActivity(inte); 

Esto funciona perfectamente y revisé este código, está funcionando correctamente.

Tenía una ActivityNotFoundException cuando implementé la actividad dentro de otra clase (como una clase interna):

 //... inside the utility class Pref public static class Activity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); } } //... 

Declarado como el siguiente dentro del manifiesto:

  

Después de declarar esto como una clase normal (clase pública PrefActicity) y cambiar el manifiesto en consecuencia, funcionó como de costumbre.

Estaba usando getActivityContext() (en lugar de Activity.this ) para el código del menú para guardar algo de trabajo y copiarlo y pegarlo en cada actividad sin editar cada vez.

Los reemplacé con Activity.this , y el problema desapareció.

Tengo la sensación de que un tipo de Android más inteligente podría evitar tener que hacer eso. Me gustaría escuchar lo que sería.

Mirando la documentación aquí lo que quieres es:

 intent.setClassName("com.xy", "className"); 

Reinicia el Eclipse y revisa tu Manifestfile nuevamente. Si encuentra que le falta la actividad correspondiente, agréguela e intente de nuevo. Solucionó mi problema similar.

Además de la respuesta de Mina. Cuando declaras actividad como clase estática interna, debes escribir tu actividad en manifiesto como …

   

aquí .app viene del nombre de tu paquete, puede ser .helpers.afdfa $ afda

Mi solución a este error fue agregar un nombre de paquete en frente del nombre en manifiesto.

Tenía las siguientes actividades:

  • id.scanner.main.A1

  • id.scanner.main.gallery.A2

Mi manifiesto contenía lo siguiente:

   

Esto resolvió el problema:

   

Sí, tengo este problema también. Actualicé el proyecto. Y luego, todo funciona bien.

cuando tengo el mismo problema Si está utilizando archivos de clase de biblioteca y los escribe en archivos de manifiesto de Android, escríbalo como y luego elimine los archivos de manifiesto de proyectos de biblioteca esta porción >> entonces funcionará absolutamente.

Esta excepción también ocurre si incluye una biblioteca en su aplicación y si la biblioteca llama a una actividad definida en el proyecto de la biblioteca. En este caso, necesitamos fusionar el manifiesto de la biblioteca con el manifiesto de la aplicación de llamada.

Con la versión 20 de ADT, podemos hacer esto agregando la statement siguiente en project.properties de la aplicación que llama.

manifestmerger.enabled = true

Consulte el contenido del archivo de manifiesto de Android en la carpeta bin del proyecto. Cuando su aplicación se comstack y se empaqueta, el archivo de manifiesto se copia en la carpeta bin. En mi caso, el Manifiesto en la carpeta bin no estaba de acuerdo con el Manifiesto original. Esto es probablemente un error de Eclipse. Copié manualmente el Manifiesto a la carpeta bin y funcionó.

puedes agregar este código en el archivo manifiest.xml

 action android:name="com.kaushalam.activity101activity.SecondActivity" category android:name="android.intent.category.DEFAULT" 

Tengo el mismo caso también. Después de leer la respuesta de thepearson, revisé mi actividad y descubrí que escribí

 public void onCreate(Bundle s) 

Pero de hecho debería ser

 protected void onCreate(Bundle s) 

Y funciona ahora!

Esto funciona si tiene un objeto Activity (que debe iniciar):

 intent.setClassName(CallingActivity.this, activityToLaunch.getComponentName().getClassName()); 

La actividad a la que llamas no contiene “sheme” y contiene filtro de intención:

       

así que en el código de llamada:

 Intent intent=new Intent("com.example.sj.myapplication.SecondActivity"); startActivity(intent); 

Intenta usar lo siguiente:

 intent.setClassName("com.xy", "com.xyclassName"); 

Esto funciona para mí

Tuve el mismo problema. Intenté todo, pero el error, que resolví más tarde, fue que quedaba un espacio entre comillas dobles y mi nombre de clase. Tiene que ser: intent.setClassName("com.xy","com.xyclassName")

no

 intent.setClassName("com.xy"," com.xyclassName")