2012-08-13 26 views
7

La web y stackoverflow contienen varios ejemplos de cómo obtener un archivo de otra aplicación de Android (por ejemplo, para usarlo como archivo adjunto de correo electrónico) con un ACTION_GET_CONTENT intento. Pero, ¿qué clase de clase debo implementar para crear una aplicación que proporcione contenido para el evento ACTION_GET_CONTENT, como puedo elegir esta aplicación (por ejemplo, para seleccionar un archivo adjunto de correo electrónico).Cómo proporcionar contenido para Intent.ACTION_GET_CONTENT

¿Es ContentProvider la solución correcta? ¿Y qué tengo que agregar a mi AndroidManifest.xml?

Respuesta

15

Después de algunas horas de búsqueda web encontré la siguiente solución.

  1. Implementar una intención de manejo de la actividad. Dentro, utilice el siguiente o más específica código:

    Uri resultUri = // the thing to return 
    Intent result = new Intent(); 
    result.setData(resultUri); 
    setResult(Activity.RESULT_OK, result); 
    finish(); 
    
  2. Añadir lo siguiente al Manifiesto:

    <activity 
        android:name="ActivityName" 
        android:label="Some label" > 
        <intent-filter> 
         <action android:name="android.intent.action.GET_CONTENT" /> 
         <category android:name="android.intent.category.OPENABLE" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
         <data android:mimeType="*/*" /> 
        </intent-filter> 
        <intent-filter> 
         <action android:name="android.intent.action.PICK" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
         <data android:mimeType="*/*" /> 
        </intent-filter> 
    </activity> 
    
+0

Por favor, vea que la dosis no funciona en este caso http://stackoverflow.com/questions/14151970/extra-slash-appends-with-file-uri -so-file-name-is-set-empty-in-file-input-contr –

+0

Parece que funciona para mí sin el filtro de intención ACTION_PICK. ¿Alguna idea de para qué caso se requiere que el filtro de intención responda? Parece que funciona solo con el intento GET_CONTENT en pre/post KK. – cargo8

0

empezando desde el nivel del API 18 intento entrante también se han establecido EXTRA_ALLOW_MULTIPLE true y en este caso, puede enviar el resultado en más de un archivo. Para ello es necesario establecer como ClipData:

resultIntent.setClipData(clipData) 
Cuestiones relacionadas