Не могу найти способ, как открыть файл на Xamarin.Forms в Android из службы зависимостей.
Под открытием файла я подразумеваю показ пользователю собственного пользовательского интерфейса, чтобы выбрать, каким способом он хочет открыть файл.
XPlat.Storage.IStorageFile storageFile = await blob.GetContentFileAsync();
File javaFile = new File(storageFile.Path);
Plugin.CurrentActivity.ICurrentActivity activity = Plugin.CurrentActivity.CrossCurrentActivity.Current;
Context context = activity.AppContext;
Uri path = FileProvider.GetUriForFile(context, context.PackageName, javaFile);
var intent = new Intent(Intent.ActionView);
intent.AddFlags(ActivityFlags.NewTask);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
intent.AddFlags(ActivityFlags.ClearTop);
string mimeType = MimeTypes.GetMimeType(System.IO.Path.GetExtension(blob.UniqueName));
intent.SetDataAndType(path, mimeType);
context.PackageManager.GetPackageInfo(context.PackageName, PackageInfoFlags.Activities);
context.StartActivity(intent);
Исключение выдается при вызове метода StartActivity (намерение)
Android.Content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://com.company.appname/root/data/data/com.company.appname/files/Blobs/file.pdf typ=application/pdf }
Я также пытался использовать другой подход для получения контекста приложения - var context = MonoAndroid.App.Application.Context;
, но похоже, что контекст получен через Plugin.CurrentActivity
, и этот подход тот же.
![Watch window screenshot](https://i.stack.imgur.com/yK41N.png)
новое редактирование
Закомментирование строки intent.SetDataAndType(path, mimeType);
приводит к появлению следующего всплывающего окна.
![Popup](https://i.stack.imgur.com/0uJ7u.png)