У меня есть проект Xamarin, в котором есть веб-представление, которое вызывает средство выбора файлов, которое я затем перезаписываю с помощью следующего кода:
private void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (requestCode == 1)
{
if (null == mUploadMessage)
return;
mUploadMessage.OnReceiveValue(WebChromeClient.FileChooserParams.ParseResult((int)resultCode, data));
mUploadMessage = null;
} else {
mUploadMessage.OnReceiveValue(null);
mUploadMessage = null;
}
}
public override bool OnShowFileChooser(Android.Webkit.WebView webView, IValueCallback filePathCallback, FileChooserParams fileChooserParams)
{
var appActivity = CrossCurrentActivity.Current.Activity as MainActivity;
using (dialogBuilder = new AlertDialog.Builder(this.context))
{
dialogBuilder.SetTitle("Upload Image");
dialogBuilder.SetPositiveButton("Choose from Library", delegate
{
Intent chooserIntent = fileChooserParams.CreateIntent();
chooserIntent.SetType("image/*");
appActivity.StartActivity(Intent.CreateChooser(chooserIntent, "Select Picture"), 1, OnActivityResult);
}
dialogBuilder.SetNegativeButton("Cancel", delegate
{
dialogBuilder.Dispose();
});
}
return true;
}
Проблема заключается в том, что когда я перезаписываю средство выбора файлов и всплывающее окно диалоговое окно и нажмите кнопку отмены, вы не можете нажать на средство выбора файлов снова. Я попытался изменить значение возврата OnShowFileChooser
на false, если для этого параметра установлено значение false, вы не сможете снова отобразить средство выбора файлов.