c# - 在 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下。
为什么图片没有显示在平板电脑的图库中?
从 SignaturePad 获取图像
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 是否应该将图片添加到图库中?我添加了所有权限,因为文件已创建。
解决方案
推荐阅读
- angular - 如何在 Angular 中使用 aria 扩展属性作为侧边栏?
- c# - 如何使用 mongodb 驱动程序和绑定将 2 个集合查询到 2 个数据网格中
- python - 将附加参数传递给 numdifftools Hessian
- javascript - 将数据从 SQL 加载到 Tabulator
- javascript - 尝试自动播放某些音频时,我不一致地收到“播放()失败,因为用户没有先与文档交互”错误
- c# - 交易未发生给出错误错误 E00040 客户资料 ID 或客户付款资料 ID
- postgresql - pyspark dataframe.write() 中的 batchsize 选项不起作用
- ios - 如何按设备设置安全区大小?
- python - TypeError: openFile() 只需要 1 个参数(给定 0)
- excel - 如何加快以下excel vba代码的速度?