C# Xamarin.Android 图像显示在文件管理器中而不是图库中

C# Xamarin.Android images are displayed in the file manager and not in the gallery

我申请了在 phone 上保存照片。

public void DownloadImage(string linkbitmap, string title)
    {           
        Bitmap bitmap = GetImageBitmapFromUrl(linkbitmap).Result;
        var path = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures + "/Tsundere");
        var complete = path.AbsolutePath;           
        var filepatch = System.IO.Path.Combine(complete, title + ".jpg");
        var filestream = new FileStream(filepatch, FileMode.Create);
        bitmap.Compress(Bitmap.CompressFormat.Png, 100, filestream);
        filestream.Close();
    }

图片显示在文件管理器中,但示例中的discord应用程序没有。我必须重新启动 phone 才能看到。如何使照片在其他应用程序中立即可见,例如来自相机的照片或从 facebook 下载的照片?

使用包含文件路径的 uri 构建 Intent 操作 (Intent.ActionMediaScannerScanFile):

using (var file = new Java.IO.File(path))
using (var uri = Android.Net.Uri.FromFile(file))
{
    var scanFileIntent = new Intent(Intent.ActionMediaScannerScanFile, uri);
    SendBroadcast(scanFileIntent);
}

仅供参考:您可以 create/register 监听 Intent.ActionMediaScannerFinished 的 BroadcastReceiver 以确定媒体扫描器何时完成处理您的请求。

我解决了这个问题。只需在代码中添加 MediaScannerConnection.ScanFile(Android.App.Application.Context, new string[] {path}, null, null); 描述这个 class https://developer.xamarin.com/api/type/Android.Media.MediaScannerConnection/