¿Cómo exportar una actividad para que otras aplicaciones puedan llamarla?

Bueno, he buscado mucho, pero no encontré una respuesta precisa sobre cómo exportar una actividad, por lo que una aplicación puede iniciarla con startActivityforResult .

¿Cómo logro eso? ¿Tengo que cambiar el Manifiesto de alguna manera?

Necesitas declarar un filtro de intenciones en tu Manifiesto (tomé el siguiente ejemplo de Barcode Scanner):

 <activity android:name="..."> <intent-filter> <action android:name="com.google.zxing.client.android.SCAN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

A continuación, cree una intención con la misma cadena de acción:

 Intent intent = new Intent("com.google.zxing.client.android.SCAN"); startActivityForResult(intent, code); 

Android debe iniciar su actividad (o mostrará un cuadro desplegable si hay varias aplicaciones que comparten la misma cadena de acción).

Como alternativa a la respuesta de Dalmas, en realidad puede exportar una Activity sin crear un <intent-filter> (junto con la molestia de crear una acción personalizada).

En el Manifest edite su etiqueta Activity como así:

 <activity android:name=".SomeActivity" .... android:exported="true" /> 

La parte importante es android:exported="true" , esta etiqueta de export determina "si la actividad puede ser lanzada por componentes de otras aplicaciones". Si su <activity> contiene un <intent-filter> entonces esta etiqueta se establece en true automáticamente, si no lo hace, entonces se establece en false por defecto.

A continuación, para iniciar la Activity haga lo siguiente:

 Intent i = new Intent(); i.setComponent(new ComponentName("package name", "fully-qualified name of activity")); startActivity(i); 

Por supuesto con este método usted necesitará saber el nombre exacto de la actividad que usted está intentando lanzar.

  • ¿Diferencia entre extender LifecycleActivity, Activity, ActionbarActivity y AppCompactActivity?
  • Cómo hacer que un método View invisible / Gone onBackPressed () en android
  • ¿Se puede recolectar una actividad si tiene variables de miembro estáticas a las que se hace referencia en otro lugar?
  • ¿Cuál es la "mejor práctica" para cambiar de "Actividades" a "Fragmentos" para aplicaciones de Android?
  • Método de actividad de llamada desde dentro de un fragmento
  • Pausa y reanudación de actividades infantiles en ActivityGroup
  • La aplicación o la actividad lleva tiempo para cargarse algunas veces
  • OnPause y OnStop () llamados inmediatamente después de iniciar la actividad
  • Android onStop () no se llama al iniciar una nueva actividad en modo multi-ventana
  • En Android cada pantalla debe ser su propia actividad o diseño?
  • Cambiar el color de las pestañas de navegación mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.