在 Xamarin.Forms Android API 29 中的图库中显示图片

问题描述

我为 Xamarin.Forms(Android、iOS 和 UWP)创建了一个示例。

最低版本:Android 9.0 API 28

目标版本:Android 10.0 API 29

我使用 nuget 包“Xamarin.Controls.SignaturePad.Forms”来创建 SignaturePad。这有效,但我在平板电脑(带有 Android 10.0 API 29 的平板电脑)的图库中看不到保存的图片 但图像在 com.sample\files\pictures 下。

为什么图片没有显示在平板电脑的图库中?

从签名板获取图像

 Stream signatureImage = await ((SignaturePad.Forms.SignaturePadView)pParameter).GetimagestreamAsync(SignaturePad.Forms.SignatureImageFormat.Png,Color.Black,Color.White);

 if (signatureImage != null)
 {
    DependencyService.Get<IMediaService>().SavePicturetodisk("currentSignature3.png",((MemoryStream) signatureImage).ToArray());
 }

Android 的 DpendencyService

public class MediaService : IMediaService
{
    Context CurrentContext => CrossCurrentActivity.Current.Activity;

    public void SavePicturetodisk(string pFileName,byte[] pImageData)
    {           
        //"/storage/emulated/0/Android/data/com.sample/files/Pictures/currentSignature3.png"
        var externalfilePath = CurrentContext.GetExternalFilesDir(Android.OS.Environment.DirectoryPictures).AbsolutePath;           
        var filePath = Path.Combine(externalfilePath,pFileName);

        System.IO.File.WriteallBytes(filePath,pImageData);

        if (File.Exists(filePath))
        {                
            MediaScannerConnection.ScanFile(CurrentContext,new String[] { filePath },null,null);

            Console.WriteLine("File exists");
        }
        else
        {
            Console.WriteLine("File error");
        }
    }      
}

MediaScannerConnection.ScanFile 是否应该将图片添加到图库? 我添加了所有权限,因为文件已创建。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)