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/
我申请了在 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/