Me preguntaba cómo Android Aplicaciones y Android implementa el mecanismo de botón y cuota de participación. Por ejemplo, cuando golpeó el botón de compartir en YouTube, una lista de aplicaciones para compartir a aparece. ¿Cómo se determina esta lista? ¿Existe una intención específica de "compartir", y entonces aparecen todos los puntos capaces de compartir el tipo de intención en las intención de extras? ¿Cuál es el nombre técnico del patrón de diseño utilizado para implementar esto? Gracias.
Respuestas
¿Demasiados anuncios?Yo no soy un desarrollador, por lo que sólo puede dar un raw explicación: aplicaciones de declarar en sus Manifest
que Mimetypes entienden y están dispuestos a responder a las acciones de las acciones. Para ello se definen los llamados "filtros prácticos", por ejemplo:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/*" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="message/*" />
<data android:mimeType="multipart/*" />
<data android:mimeType="text/*" />
<data android:mimeType="video/*" />
</intent-filter>
Así que cuando usted golpea el botón de "compartir", el contenido de compartir, se evalúa y se compara con las aplicaciones de haber declarado su voluntad de recibir el formato.
Fuentes:
- La intención de Filtro para capturar todo lo que se comparte Intenciones (StackOverflow)
- La recepción de Simples Datos de Otras Aplicaciones (developer.android.com)
Hay dos partes: el mecanismo para la comunicación de aplicaciones para decir que se pueden compartir cosas, y el mecanismo por el que las aplicaciones con contenido para compartir. Voy a tratar con ellos de uno en un momento, pero primero una nota rápida acerca de las intenciones.
Las calidades de
La intención en Android es lo que se utiliza para iniciar una aplicación. Puede funcionar como un acceso directo, o como un archivo de Windows de la asociación. La intención puede especificar el nombre de la aplicación para empezar, pero no tiene que. También puede especificar la acción a realizar (por ejemplo, "abrir su actividad principal", "vista de esta dirección", "crear una entrada de agenda") y el tipo MIME del objeto que se va a actuar (por ejemplo, que la cosa de la que desea ver el tipo de imagen/jpeg). Algunos de los nombres de acciones son específicas para una aplicación en particular, pero muchos están normalizados por Android para permitir que las aplicaciones para interactuar.
La intención de los filtros y de la comunicación de la aplicación
Cada aplicación especifica intención filtros para decir qué tipo de acciones se pueden llevar a cabo. por ejemplo, un visor de imágenes de la aplicación registrará un intento de filtro para "ver este URL" donde el tipo MIME de la imagen"/*"; un navegador web registrará un intento de filtro para "ver este URL" donde el esquema de URL es "http" o "https". Ser capaz de compartir cosas, una aplicación registra una intención de filtro para el "envío" de la intención, ya sea con un tipo específico (por ejemplo, si sólo puede compartir fotos), o de cualquier tipo.
El contenido de la aplicación
La aplicación que desea compartir algún contenido crea una intención " con la "participación" de acción y una URL que apunta a que el contenido a compartir. (Esto es a menudo un "temporal" de la dirección URL que da a la recepción de la aplicación temporal de acceso al archivo en el contenido de la aplicación de almacenamiento privado, o a una secuencia generada por el contenido de la aplicación.) No especifica el nombre de una aplicación para manejar la intención. A continuación, se da que la intención de Android framework y le pide Android para mostrar el selector de cuadro de diálogo. Android compara la intención con la intención de filtros de todas las aplicaciones instaladas, y crea la lista y se lo muestra al usuario. Cuando el usuario elige una aplicación en particular, Android se inicia la aplicación y se lo pasa de la intención. La aplicación utiliza la dirección URL para obtener el contenido de la aplicación original.
De nuevo en la Melcocha: participación Directa
En Malvavisco, hay otro mecanismo de llamada Directa. Esto complementa la intención mecanismo, así que usted puede elegir a las personas o grupos para compartir directamente desde el selector de cuadro de diálogo, saltarse el paso extra de "¿a quién le gustaría enviar a". Esto funciona de forma ligeramente diferente: la aplicación de comunicación tiene que prestar un servicio. Cuando la aplicación con el contenido de la pregunta por el selector, Android inicia el servicio para cada aplicación. El servicio devuelve una lista de acciones de que se trate objetivos, y Android reúne todas esas listas separadas en la lista que se muestra en el cuadro de diálogo.