void WritePrintedPdfDoc(ParcelFileDescriptor destination) { var javaStream = new Java.IO.FileOutputStream(destination.FileDescriptor); var osi = new OutputStreamInvoker(javaStream); using (var mem = new MemoryStream()) { document.WriteTo(mem); var bytes = mem.ToArray(); osi.Write(bytes, 0, bytes.Length); } }
public override ParcelFileDescriptor OpenFile(Android.Net.Uri uri, string mode) { switch ((UriMatches)UriMatcher.Match(uri)) { case UriMatches.GetIcon: var iconId = (PwIcon)Enum.Parse(typeof(PwIcon), uri.GetQueryParameter(IconIdParameter)); var customIconUuid = new PwUuid(MemUtil.HexStringToByteArray(uri.GetQueryParameter(CustomIconUuidParameter))); var iconDrawable = _db.DrawableFactory.GetIconDrawable(App.Context.Resources, _db.KpDatabase, iconId, customIconUuid) as BitmapDrawable; if (iconDrawable != null) { var pipe = ParcelFileDescriptor.CreatePipe(); var outStream = new OutputStreamInvoker(new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1])); ThreadPool.QueueUserWorkItem(state => { iconDrawable.Bitmap.Compress(Bitmap.CompressFormat.Png, 100, outStream); outStream.Close(); }); return pipe[0]; } // Couldn't get an icon for some reason. return null; default: throw new ArgumentException("Unknown Uri: " + uri, "uri"); } }