content: // схема не требуется для Intent.ActionMediaScannerScanFile - PullRequest
0 голосов
/ 26 сентября 2018

При запросе фотоаппарата с 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...