xamarin.forms - 以 webview xamarin 形式打开文件不起作用
问题描述
我已经使用 xamarin 表单在 webview 中实现了打开文件。它工作正常,当我点击打开文件文件对话框时我遇到的问题将打开,我可以在其中看到我的所有文件,如果我不选择任何东西并从手机点击后退按钮,打开文件将不再工作。如果我继续发送文件,它可以正常工作,但如果打开文件并且不选择任何图像并且只是返回打开的文件将无法再次工作。这是我的代码 MainActivity
public void StartActivity(Intent intent, int requestCode, Action<int, Result, Intent> resultCallback)
{
this.resultCallbackvalue = resultCallback;
StartActivityForResult(intent, requestCode);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (this.resultCallbackvalue != null)
{
this.resultCallbackvalue(requestCode, resultCode, data);
this.resultCallbackvalue = null;
}
//Platform.OnActivityResult(requestCode, resultCode, data);
}
MyWebViewRenderer 类
public class MyWebClient : WebChromeClient
{
private static int filechooser = 1;
private IValueCallback message;
MainActivity mContext;
public MyWebClient(MainActivity context)
{
this.mContext = context;
}
public override bool OnShowFileChooser(Android.Webkit.WebView webView, IValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
{
this.message = filePathCallback;
Intent chooserIntent = fileChooserParams.CreateIntent();
chooserIntent.AddCategory(Intent.CategoryOpenable);
this.mContext.StartActivity(Intent.CreateChooser(chooserIntent, "File Chooser"), filechooser, this.OnActivityResult);
return true;
}
private void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (data != null)
{
if (requestCode == filechooser)
{
if (null == this.message)
{
return;
}
this.message.OnReceiveValue(WebChromeClient.FileChooserParams.ParseResult((int)resultCode, data));
this.message = null;
}
}
}
}
解决方案
推荐阅读
- python - 为什么我会收到 OutOfBoundsDatetime 错误?
- amazon-web-services - 如果我位于阻止出站流量到 vpn 端口的防火墙后面,那么连接到 openvpn 服务器的最佳方式是什么
- image - 具有变换坐标的图像的 Interp2
- c++ - 给定和未排序的数组 arr ,大小为 n 的非负整数,找到一个连续子数组,它添加到数字总和。帮助获得输出
- kubernetes - 我们可以在 EKS 中在运行时编辑 PV 以将其映射到不同的 EBS 卷吗?
- security - 用于发出恒定时间目标代码的编译器选项
- c# - 单击按钮导航到社交媒体页面
- ethereum - “未定义”的参数数量无效。得到 2 预期 1
- node.js - 强制池请求按照它们产生的顺序来解决
- python - 递归搜索时如何忽略特定目录和文件夹?看门狗观察者