微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin.Essentials 共享可绘制

如何解决Xamarin.Essentials 共享可绘制

我正在尝试共享位于 Android 的 Resources/Drawables 文件夹中的本地图像。 我正在使用 Xamarin 和 Xamarin.Essentials 插件。 于是有了这个函数

await Share.RequestAsync(new ShareFileRequest
{
Title = Title,File = new ShareFile(file)
});

所以对于文件,我需要从 Drawable 文件夹到文件的路径。 我尝试了很多变体。 例如:

var file = Android.Net.Uri.Parse("android.resource://" + Android.App.Application.Context.PackageName + "/" + Resource.Drawable.image).Path;

但是我总是收到一个错误,就是找不到文件。 我做错了什么? 提前致谢

解决方法

因为资源没有文件路径,正如@Jason 所说,我将图像保存在另一个可访问的文件中。 所以我不知道这是否是最好的解决方案,但它对我有用:

        Drawable drawable = ResourcesCompat.GetDrawable(Resources,Resource.Drawable.image,null);
        Bitmap bitmap = ((BitmapDrawable)drawable).Bitmap;
        byte[] imgByteArray;
        using (var stream = new MemoryStream())
        {
            bitmap.Compress(Bitmap.CompressFormat.Png,stream);
            imgByteArray = stream.ToArray();
        }

        var file = System.IO.Path.Combine(FileSystem.CacheDirectory,"share.png");
        File.WriteAllBytes(file,imgByteArray);
        await Share.RequestAsync(new ShareFileRequest
        {
            Title = "Share",File = new ShareFile(file)
        });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。