Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Imprimir desde Android (mostrar directamente la lista de impresoras) (https://www.clubdelphi.com/foros/showthread.php?t=94030)

espinete 25-06-2019 18:50:48

Imprimir desde Android (mostrar directamente la lista de impresoras)
 
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:

Código Delphi [-]
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

2 Archivos Adjunto(s)
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:

Archivo Adjunto 3755

Archivo Adjunto 3756


La franja horaria es GMT +2. Ahora son las 18:28:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi