我在两个不同的手机上运行相同的应用程序。其中一部手机是ZTE Maven(Android 5.1),另一部手机是Google Pixel 2(Android 10)。
Android 5.1手机会自动将使用相机拍摄的照片(通过Intent)保存到图库中。但是,Android 10手机不会将图片保存到“照片”(没有Gallery应用程序)。
我的应用程序使用Xamarin.Forms,下面是相关代码:
public class CameraService : ICameraService
{
public Task<Stream> TakePhotoAsync()
{
var dir = MainActivity.Instance.ApplicationContext.FilesDir;
var imageFile = new File(dir, $"{Guid.NewGuid()}.jpg");
MainActivity.Instance.PhotoPath = imageFile.Path;
var imageUri = FileProvider.GetUriForFile(MainActivity.Instance,
"com.(company).(appname).android.fileprovider", imageFile);
var intent = new Intent(MediaStore.ActionImageCapture);
intent.PutExtra(MediaStore.ExtraOutput, imageUri);
// Start the camera capture activity (resumes in MainActivity.cs)
MainActivity.Instance.StartActivityForResult(
intent, MainActivity.TakePhotoId);
// Save the TaskCompletionSource object as a MainActivity property
MainActivity.Instance.TakePhotoTaskCompletionSource = new TaskCompletionSource<Stream>();
// Return Task object
return MainActivity.Instance.TakePhotoTaskCompletionSource.Task;
}
}
很明显,我已经用“(company)”和“(appname)”代替了真实的公司名称和应用名称。
这些手机或Android版本在内部保存图片方面是否有任何不同的表现?我有什么办法可以判断这种自动保存是否会发生?