ActivityNotFoundException (sí, esta actividad se declara en AndroidManifest.xml)
-
27-10-2019 - |
Pregunta
Encontré algunos hilos informando un problema similar pero ninguno de ellos Realmente ofrece algo que aún no he probado.
Una llamada inocente:
mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));
con lo siguiente en AndroidManifest.xml:
<application>
<activity android:name="MyActivityLib" />
<activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name">
</activity>
</application>
Desencadena la siguiente excepción:
06-14 14:06:50.297: ERROR/AndroidRuntime(9272):
android.content.ActivityNotFoundException: Unable to find explicit activity class
{com.example.baseapp.paypal/com.example.baseapp.MyEditPreferences};
have you declared this activity in your AndroidManifest.xml?
Las cosas es que este código solía funcionar sin problemas antes de cambiarlo de un proyecto de aplicación monolítica a un proyecto de 2 partes que se compone de un proyecto de biblioteca y un proyecto de aplicación.
AndroidManifest.xml es el de la biblioteca proyecto.
¿Qué necesito hacer eliminar esto? ActivityNotFoundException
?
Solución
Acabo de resolver el problema.
Todo lo que tenía que hacer era agregar el FQN al Solicitud proyecto AndroidManifest.xml
:
<activity android:name="com.example.baseapp.MyEditPreferences"
android:label="com.example.baseapp.MyActivityLib:string/app_name">
</activity>
De hecho, eliminé cualquier referencia a MyEditPreferences
en el Biblioteca proyecto AndroidManifest.xml
Completamente y todavía funciona.
También funciona con la declaración original de 1 línea StartActivity:
mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));
Conclusión: es la aplicación AndroidManifest.xml
Eso importa, no la biblioteca.
Otros consejos
¿Quizás esto funcione?
Intent mIntent = new Intent();
mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences");
mActivity.startActivity(mIntent);
Si usa clases que se incluyen en un paquete de Android (configuración, preferencias, actividad, ...), deberá poner esto:
Intent i = new Intent(this, <name_of_your_package>.classname.class);
Si no pone "name_of_your_package", el compilador pensará que se está refiriendo a la clase en Android Package (Android.*).
Sé que este es un hilo muy viejo, pero acabo de tener el mismo problema. En mi caso, todo lo que tenía que hacer era eliminar un espurio
import java.util.prefs.Preferences;
Simplemente revise su manifiesto en busca de errores que su IDE no apunte.