我需要使用我的应用程序名称作为相册将位图保存到图库。路径应为:
图库-> MyAppName-> test.png
但是我得到的最好结果是:
图库->其他-> MyAppName-> test.png
这是我的代码:
using Android.Graphics;
using Android.Media;
using System;
using System.IO;
..
.
.
public static void ExportBitmapAsPNG(Bitmap bitmap)
{
var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath+"/MyAppName";
if (!Directory.Exists(sdCardPath))
Directory.CreateDirectory(sdCardPath);
var filePath = System.IO.Path.Combine(sdCardPath, "test.png");
var stream = new FileStream(filePath, FileMode.Create);
bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream);
stream.Close();
MediaScannerConnection.ScanFile(Android.App.Application.Context, new string[] { filePath }, null, null);
}
我希望有人能告诉我我想念的东西吗?
P.S。 我尝试使用MediaStore,但它始终保存在Picture文件夹中,并且没有重载来更改此设置。
Android.Provider.MediaStore.Images.Media.InsertImage(ContentResolver, bitmap2, "test", "");
答案 0 :(得分:0)
我已经重写了您的功能以提供该功能。关键区别在于创建文件夹的方式。此外,我将Intent用于介质扫描仪。无论如何,我认为这应该可以让您到达想要的位置。希望这会有所帮助!
public void ExportBitmapAsPNG(Bitmap bitmap) {
// Get/Create Album Folder To Save To
var jFolder = new Java.IO.File(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryPictures), "MyAppNamePhotoAlbum");
if (!jFolder.Exists())
jFolder.Mkdirs();
var jFile = new Java.IO.File(jFolder, "MyPhoto.jpg");
// Save File
using (var fs = new FileStream(jFile.AbsolutePath, FileMode.CreateNew)) {
bitmap.Compress(Bitmap.CompressFormat.Png, 100, fs);
}
// Save Picture To Gallery
var intent = new Intent(MediaStore.ActionImageCapture);
intent.PutExtra(MediaStore.ExtraOutput, Android.Net.Uri.FromFile(jFile));
StartActivityForResult(intent, 0);
// Request the media scanner to scan a file and add it to the media database
var f = new Java.IO.File(jFile.AbsolutePath);
intent = new Intent(Intent.ActionMediaScannerScanFile);
intent.SetData(Android.Net.Uri.FromFile(f));
Application.Context.SendBroadcast(intent);
}
希望这会有所帮助!