2011-12-24 18 views
11

Quiero que mi aplicación para Android aparezca como una opción cuando el usuario comparte una URL desde otra aplicación (como el navegador). ¿Cómo puedo registrar mi aplicación para hacer eso? ¿Cómo puedo reaccionar para vincular acciones?Hacer que la aplicación para Android escuche enlaces compartidos

Muchas gracias.

Editar:

He intentado usar IntentFilter así sin éxito:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
</intent-filter> 

¿Alguna idea?

Respuesta

22

Como mínimo muy básico que necesita:

<activity android:name=".ShareActivity"> 
    <intent-filter 
     android:label="Share with my app"> 
     <action android:name="android.intent.action.SEND" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

en su manifiesto ... que al menos hacer que se muestre en la lista de 'compartir'.

La parte más importante se echa en falta es:

<action android:name="android.intent.action.SEND" /> 

Para que sea realmente hacer algo, que necesita una actividad.

Esto puede ayudar también: http://sudarmuthu.com/blog/sharing-content-in-android-using-action_send-intent

Información adicional:

<activity android:name=".ShareActivity"> 
<intent-filter 
    android:label="Share with my app"> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 
</activity> 

Allí el <data android:mimeType limitará lo que usted responde a, si desea limitar la respuesta de su aplicación.

+0

Gracias, que registra mi aplicación que se incluirá cuando comparta una URL. Sin embargo, el artículo que publicó no dice cómo responder cuando otra aplicación comparte una URL con mi aplicación. Por ahora, mi aplicación está abierta como siempre, no sucede nada especial. ¿Cómo puedo recuperar la URL compartida? –

+3

Su pregunta preguntó cómo obtenerla en la lista. Es posible que desee aceptar esto como una respuesta y publicar otra pregunta a lo largo de las líneas 'recuperar la URL compartida de android.intent.action.SEND intención' Solo un pensamiento. – TryTryAgain

+2

O no: http://www.vogella.de/articles/AndroidIntent/article.html#explicitintents es lo que está buscando - Al menos debería votarlo, ya que fue útil, aunque proporcionó una solución a tu pregunta – TryTryAgain

0

Debe crear una actividad con el filtro de intención apropiado. Lea la documentación sobre Intent, explica todo esto con ejemplos.

1

para obtener la imagen en su actividad, utilice Uri imgUri = (Uri) i.getParcelableExtra(Intent.EXTRA_STREAM); para una sola imagen, o utiliza ArrayList<Uri> imgUris = i.getParcelableArrayListExtra(Intent.EXTRA_STREAM); para obtener una lista de imágenes:

Intent i = getIntent(); 
Bundle extras = i.getExtras(); 
String action = i.getAction(); 

// if this is from the share menu 
if (Intent.ACTION_SEND.equals(action)) { 
    if (extras.containsKey(Intent.EXTRA_STREAM)) { 
     Uri imgUri = (Uri) i.getParcelableExtra(Intent.EXTRA_STREAM); 
     // Do job here 
    } 
} 

Espero que ayude

+0

No puedo hacer que Intent.ACTION_SEND.equals (acción)) funcione. getAction devuelve nulo. – Sulby

Cuestiones relacionadas