Android: google docs enviar intención?

Mi aplicación incluye una función de envío que presenta una lista de programas instalados para enviar un documento. Esto lo hace con:

Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("application/zip"); sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ docPath)); startActivity(Intent.createChooser(sendIntent, "Email")); 

Las aplicaciones como Gmail y Dropbox aparecen en la lista, pero Google Docs no. En las aplicaciones de la competencia que utilizan el mismo tipo de documento, Google Docs aparece como una intención. ¿Tengo que usar algún otro método o tipo de intención para que Google Docs muestre?

Puede buscarlo usted mismo, ejecutar DDMS o la vista de LogCat en Eclipse y ver el registro de depuración escrito cuando su u otra aplicación inicie la actividad para la intención ACTION_SEND.

Verás:

 ActivityManager: START {act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras)} 

A continuación, siga también registro cuando realmente elegir la aplicación para el envío. Verás algo como esto:

 ActivityManager: START {act=android.intent.action.SEND typ=application/zip flg=0x13000000 cmp=com.android.bluetooth/.opp.BluetoothOppLauncherActivity (has extras)} 

O también puede ver esto:

 ActivityManager: START {act=android.intent.action.SEND typ=*/* flg=0x13000000 cmp=com.google.android.apps.docs/.shareitem.UploadSharedItemActivity (has extras)} 

Ves la diferencia aquí. Una aplicación establece el tipo mime real = application / zip, otra aplicación establece el tipo mime * / *. Esto significa que la aplicación Docs no está diseñada para enviar archivos zip.

Explorando aún más, utilice la aplicación AppXPlore , abra Docs, vuelva a crear el manifiesto de la aplicación Docs y observe el bloque con UploadSharedItemActivity (el que coincide con el tipo * / *), en su bloque de filtros de intenciones:

 <activity label="Docs" name=".shareitem.UploadSharedItemActivity"> <intent-filter> <action name="android.intent.action.SEND" /> <action name="android.intent.action.SEND_MULTIPLE" /> <category name="android.intent.category.DEFAULT" /> <data mimeType="video/*" /> <data mimeType="image/*" /> <data mimeType="text/*" /> <data mimeType="application/x-vnd.oasis.opendocument.spreadsheet" /> <data mimeType="application/vnd.ms-powerpoint" /> <data mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> <data mimeType="application/msword" /> <data mimeType="application/pdf" /> <data mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> <data mimeType="application/pdf" /> <data mimeType="application/rtf" /> <data mimeType="application/vnd.ms-excel" /> <data mimeType="application/vnd.oasis.opendocument.text" /> <data mimeType="application/vnd.sun.xml.writer" /> </intent-filter> 

Esto demuestra que la aplicación Docs está diseñada para enviar tipos de archivos predefinidos, Zip no está entre ellos.

Tu app puede respetar esta decisión de la aplicación Docs, o puede enviarla con el tipo * / * mime, pero en tal caso el usuario puede estar confundido por qué hay aplicaciones inesperadas que no manejan archivos Zip en la lista. Confiaría en la 1ra opción, y usando el tipo real del mime.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.