2011-03-12 10 views
5

Estoy desarrollando una aplicación para Android que utiliza varias aplicaciones de terceros, llamadas por intenciones, p. Ej. un calendario de terceros, webradio, etc. Por lo tanto, para iniciar estos intentos correctamente, estas aplicaciones deben estar instaladas. ¿Es posible incluir esos apk en mi aplicación para que también se instalen automáticamente cuando se configura mi aplicación? Parece que es una mala manera bastante para permitir al usuario instalar estas aplicaciones de forma manual ...paquete de aplicaciones múltiples en una aplicación

¿Alguna sugerencia?

Gracias Peter

Respuesta

7

¿Es possbile para incluir esos archivos apk en mi aplicación para que se instalan automáticamente, así que cuando mi aplicación es la instalación?

Probablemente no sea una buena idea.

Para empezar, es probable que sea una violación de derechos de autor, a menos que tenga el permiso expreso de los desarrolladores para agrupar de esta manera.

Luego, está la cuestión de si esos desarrolladores realmente expusieron una API que esperan que esté usando de esta manera, y si esa API es exclusiva para ellos o es parte de un sistema genérico (por ejemplo, ACTION_SEND). Los usuarios deberían poder instalar cualquier aplicación que deseen que cumpla con una solicitud genérica Intent (por ejemplo, ACTION_SEND) y no verse obligados a utilizar alguna aplicación que usted ordene. Y no debería integrarse a aplicaciones que no expongan una API documentada y compatible o que indiquen que están interesadas en dicha integración.

Luego, está la cuestión de si esas aplicaciones se pueden actualizar más adelante, si no se instalaron originalmente a través de algún servicio de distribución estándar (por ejemplo, Android Market).

Entonces, no es cuestión de todos esos archivos APK haciendo que el archivo APK que su propio mucho más grande, ocupando mucho más espacio en el dispositivo.

Si usted puede conseguir más allá de todo eso, debería ser posible. Empaque los archivos APK como activos, cópielos en la primera ejecución en el almacenamiento externo y luego inicie un ACTION_VIEWIntent en ellos a través del startActivity() usando el tipo MIME correcto.

Sin embargo, nuevamente, esto probablemente no sea una buena idea.

Parece ser bastante mala manera para permitir al usuario instalar estas aplicaciones de forma manual ...

Idealmente, su aplicación no debería depender de estas otras aplicaciones, por lo que no importa mucho si el usuario los tiene o no. Puede detectar si están allí a través de PackageManager y queryIntentActivities(), luego usar eso para determinar si desea deshabilitar partes de su aplicación, o guiar al usuario para instalar las aplicaciones adicionales, etc.

+0

He aquí un caso de uso decente: digamos mi aplicación depende del escáner de código de barras ZXing (http://code.google.com/p/zxing/). Parecen alentar que otras aplicaciones dependan de las suyas a través de Intents (http://code.google.com/p/zxing/wiki/ScanningViaIntent). Sería estupendo agrupar el escáner junto con mi aplicación, especialmente si sospecho que el usuario puede no tener conexión de red cuando la usa por primera vez. ¿Crees que esto calificaría para empacar, a pesar de las dificultades que describes? –

+0

@ Jan Zankowski: en mi humilde opinión, ese es un buen ejemplo de por qué * no * agrupar.La razón por la que ZXing quiere que Barcode Scanner esté integrado a través de APK es precisamente para que puedan actualizar la aplicación. Es por eso que se tomaron la molestia de proporcionarle el JAR de integración con la lógica de detección automática y el soporte de Market. Si no está seguro de que el usuario instale Barcode Scanner por sí mismo, al menos integre ZXing directamente en su propio código, ya que es de código abierto, para que no pierda espacio adicional. Sin embargo, al final, si Barcode Scanner puede enviarse como desee es una pregunta para ZXing. – CommonsWare

+0

Tengo un caso similar. Quiero evitar codificar demasiado código compartido en C#, así que estaba pensando en hacer algo en C# y el resto en JAVA y hacer que hablen juntos utilizando intenciones. Por lo tanto, tendría sentido agrupar los dos archivos apk en uno. – slott

Cuestiones relacionadas