PDA

Ver la Versión Completa : Imprimir desde Android (mostrar directamente la lista de impresoras)


espinete
25-06-2019, 18:50:48
Hola!

Llevo tiempo intentando averiguar si esto es posible. Teniendo un documento (TXT, PDF o lo que sea), puedo usar Intent para abrirlo, compartirlo, enviarlo a otra aplicación compatible, etc.

Por ejemplo, este es el código que uso para abrir un PDF:


procedure OpenPDF(const AFileName: string);
var
LIntent: JIntent;
LAuthority: JString;
LUri: Jnet_Uri;
begin
LAuthority := StringToJString(JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName) + '.fileprovider');
LUri := TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context, LAuthority, TJFile.JavaClass.init(StringToJString(AFileName)));
LIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
LIntent.setDataAndType(LUri, StringToJString('application/pdf'));
LIntent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
TAndroidHelper.Activity.startActivity(LIntent);
end;


Con ACTION_VIEW o ACTION_SEND lo que hace es mostrar las apps compatibles con el formato que le queramos pasar (en este caso application/pdf).

La pregunta es... ¿cómo hacen otras apps para que cuando pulsas "Imprimir" aparezca directamente la lista de impresoras, en vez de la ventana de compartir?

La app de Adobe Reader, el cliente de email BlueMail y otras varias que he probado en mi móvil permiten esto.

¿Qué servicio, clase de java o flags hay que enviar en el Intent?

Casimiro Notevi
25-06-2019, 19:27:31
Creo que te refieres a los dispositivos bluetooth conectados.

espinete
25-06-2019, 22:53:37
No exactamente. Es la ventana de elegir impresora. Sólo aparecen impresoras, aunque haya más dispositivos bluetooth conectados. Voy a ver si puedo publicar un screenshot, pero si tienes Android puedes ver a qué me refiero con cualquier app que permita "imprimir"

Casimiro Notevi
26-06-2019, 09:31:11
Entiendo, lo que te decía es si quieres listar las impresoras conectadas bluetooth, las conectadas por puerto serie, las conectadas por red (tcp), etc.

espinete
26-06-2019, 10:44:46
Pues en principio las impresoras que ya he conectado/configurado en el móvil, independientemente del tipo de conexión. En mi móvil por ejemplo puedo ver todas mis impresoras (wifi o bluetooth), estando desactivadas las que en ese momento no tienen conexión.

No sé si esa ventana es la de Google Cloud Print o alguna similar.

Esta es la ventana a la que me refiero:

3755

3756