我正在使用方法
srcPath = await CrossFilePicker.Current.PickFile();
从软件包Xamarin.Plugin.FilePicker中获取。这可以正常工作,我可以在设备上选择一个文件。之后,我想通过以下方式向用户提供反馈
await UserDialogs.Instance.AlertAsync(message);
但是,在Android Samsung SM-T805上,对话框消息被阻止。
在我看来,FilePicker没有完全关闭。到达PickFile()方法后,将出现两个窗口:一个黑色的标题为Android的窗口,并在确认对外部存储的访问后为实际的文件选择器。一旦选择了文件,文件选择器就会消失,并执行我的进一步代码。但是直到我离开Xamarin.Forms.Command方法为止,背景层(深色,标题为Android)不会消失,该方法链接到触发文件选取方法的按钮。
我的代码(大致):
[...]
using Xamarin.Forms;
using Plugin.FilePicker;
using Acr.UserDialogs;
namespace SomeNameSpace
{
public class SomeViewModel
{
[...]
public Command ImportCommand => new Command(() => ChooseFile());
private async void ChooseFile()
{
string srcPath = await CrossFilePicker.Current.PickFile();
await UserDialogs.Instance.AlertAsync("Help Me Please.");
// Further Code
[...]
}
}
}
有任何想法吗?提前致谢!
Nicole Lu给出了使用DisplayAlert代替UserDialogs的提示。仅仅改变这种方法是不够的。但是DisplayAlert可以让您决定要在哪个页面上发送警报。因此,诀窍是先使用FilePicker保存当前页面,然后再将警报发送到该页面。这是更新的代码:
[...]
using Xamarin.Forms;
using Plugin.FilePicker;
using Acr.UserDialogs;
namespace SomeNameSpace
{
public class SomeViewModel
{
[...]
public Command ImportCommand => new Command(() => ChooseFile());
private async void ChooseFile()
{
Page page = App.Current.MainPage;
string srcPath = await CrossFilePicker.Current.PickFile();
await page.DisplayAlert("Help", "Please help me.", "OK");
// Further Code
[...]
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句