¿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?
- Desacoplamiento de la aplicación en la aplicación de la actividad
- Java.lang.IllegalStateException: no puede encontrar el método onClick del botón en Android Studio
- ¿Cómo puedo crear una actividad transparente en Android?
- ¿Cómo iniciar una actividad cuando se hace clic en la notificación?
- Eliminar archivo después de compartir a través de la intención
- Obtener instancia de actividad
- ¿El botón de retroceso de Android no reinicia la actividad?
- Actividad se muestra después de un retraso extraño
- Cambiar el nombre de la actividad del lanzador en una nueva versión de la aplicación
- ¿Cómo bloquear la orientación de los fragmentos sin bloquear la orientación de la actividad?
- Cómo configurar la actividad en modo de pantalla completa en Android?
- Biblioteca de Android utilizando los recursos del proyecto principal
- Actividad de Android onDestroy () llamada en bloqueo de pantalla
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.