2011-11-16 16 views

Respuesta

13

tiene que declarar un filtro intención en su Manifiesto (Tomé el siguiente ejemplo de código de barras escáner):

<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 debería comenzar su actividad (o mostrará un cuadro desplegable si hay varias aplicaciones que comparten la misma cadena de acción).

+0

Gracias, acabo de leer el Barcodescanner Manifest y descubrí lo mismo. :] – Force

21

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

En el Manifest editar su etiqueta Activity así:

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

La parte importante es android:exported="true", esta etiqueta export determina "si la actividad puede ser lanzado por componentes de otras aplicaciones". Si su <activity> contiene un <intent-filter>, esta etiqueta se configura automáticamente en true, si no está configurada en false de forma predeterminada.

A continuación, para poner en marcha el Activity hacer esto:

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

Por supuesto, con este método, necesitará saber el nombre exacto de la actividad que está tratando de poner en marcha.

+0

muchas gracias! mi aplicación de repente comenzó a arrojar este error incluso después de hacer un cambio intrascendente, incluso después de eliminar ese cambio, ¡pero esto solucionó eso! – Michael

+0

muy buena especificación sobre el comportamiento predeterminado. Una aplicación externa decía que la actividad principal de mi aplicación se había exportado y no podía entender por qué hasta que no leyera tu respuesta ... ¡que tengas un buen día! – Antonino

Cuestiones relacionadas