Ver Mensaje Individual
  #1  
Antiguo 25-06-2019
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Reputación: 16
espinete Va camino a la fama
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?
Responder Con Cita