2012-01-20 13 views
6

Vi su respuesta sobre el envío de archivos a través de Bluetooth. (respondió 13 de junio '11 a las 5:01)Envío de varios archivos a través de Bluetooth

Intent i = new Intent(Intent.ACTION_SEND); i.setType("image/jpeg"); 
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("/sdcard/file.jpg")); 
startActivity(Intent.createChooser(i, "Send Image")); 

Sí! Funciona. Abrirá una herramienta/ventana/diálogo Bluetooth por defecto para enviar un archivo. Pero, ¿podrías enseñarme cómo enviar más archivos? Aquí está mi código ...

String xFile[3] = { "aa.txt", "bb.txt", "cc.txt" }; 

Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); 

for (int i = 0; i < 3; i ++) { 
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(xFile[i]))); 
    startActivity(intent); 
} 

Funciona, pero se abrirá la herramienta Bluetooth predeterminado/ventana/de diálogo por 3 veces! @@ ¡Si hay 10 archivos, se abrirá la herramienta/ventana/diálogo Bluetooth por defecto 10 veces!

¿Puedo saber cómo abrir la herramienta/ventana/diálogo Bluetooth por defecto una vez, y luego enviar todos los archivos?

¡Muchas gracias de antemano!

Respuesta

1

¡Es un ejercicio bastante simple pero tiene un costo! Espacio de almacenamiento SDCard.

Sí, necesita descargar los múltiples archivos en la tarjeta SD para este fin.

Para cada archivo volcado en la tarjeta SD, debe crear una lista de matriz de Uri.

ArrayList<Uri> listDumpedFileUris = new ArrayList<Uri>(); 
Uri uriFile = Uri.fromFile(new File(dumpedFilePath)); 
listDumpedFileUris.add(uriFile); 

La parte fundamental es decirle explícitamente la intención de que el selector debe ser capaz de leer los archivos objeto de dumping en la tarjeta SD a través de la concesión del permiso de lectura, y lo más importante, añadir la lista de arreglo a la intención de EXTRA paquete parcelable.

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, listDumpedFileUris); 
startActivity(Intent.createChooser(intent, "Send these files using...")); 

A continuación, todos los archivos seleccionados se enviarán a través de la instalación de Bluetooth en tiempo de ejecución de Android. Por cierto, puede que tenga que especificar explícitamente el setType de los archivos, por ejemplo, image/jpeg como en:

intent.setType("image/jpeg"); 

La única responsabilidad es de su parte para limpiar los restos del sistema de archivos de tarjeta SD, que es algo, en su mayor parte, los usuarios de Android detestan absolutamente!

5

Bueno, esto se puede hacer de la siguiente manera. Deje que la lista de archivos para enviar se denotará por mMultiSelectData.

ArrayList<Uri> uris = new ArrayList<Uri>(); 
int length = mMultiSelectData.size(); 
Intent mail_int = new Intent(); 
mail_int.setAction(android.content.Intent.ACTION_SEND_MULTIPLE); 
mail_int.setType("*/*"); 
for(int i = 0; i < length; i++) { 
    File file = new File(mMultiSelectData.get(i)); 
    uris.add(Uri.fromFile(file)); 
} 
mail_int.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
mContext.startActivity(mail_int); 

Esto abrirá un cuadro de selección. Elija Bluetooth y se enviará la lista de archivos.

Cuestiones relacionadas