При запросе фотоаппарата с Intent
на Nougat 7.0 (целевая версия / каркас) с использованием схемы content://
и FileProvider
(вместо )file://
), исключение не выдается из соответствующего вызова SendBroadcast(mediaScanIntent);
Следует ли использовать схему content://
и для mediaScanIntent
?
OnActivityResult (использует file://
)
Intent mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile);
Uri contentUri = Uri.FromFile(_photoFile);
mediaScanIntent.SetData(contentUri);
SendBroadcast(mediaScanIntent);
Camera Intent (использует content://
)
_photoFile = new File(Environment.SoftSettings.AttachmentsPath, String.Format("{0}.jpg", Guid.NewGuid()));
Intent intent = new Intent(MediaStore.ActionImageCapture);
if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
{
// Android 7 requirment to use content:// scheme
var uriFile = Android.Support.V4.Content.FileProvider.GetUriForFile(
context,
context.ApplicationContext.PackageName + ".provider",
_photoFile);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
intent.PutExtra(MediaStore.ExtraOutput, uriFile);
}
else
{
intent.PutExtra(MediaStore.ExtraOutput, Uri.FromFile(_photoFile));
}
StartActivityForResult(intent, (int)ActivityRequestCode.Camera);