C# 具有不一致行为的文件上载按钮
我有一个注册页面,上面有一个文件上传按钮。这是C#中的aspx页面 当我在浏览器中运行它时,它工作正常。 当我在android应用程序的web视图中运行它时,它不会在android手机中启动文件菜单。 当我在android手机上的浏览器中运行页面时,它会很好地打开手机上的“文件”菜单 如何让它在web视图中工作 我的asp标签C# 具有不一致行为的文件上载按钮,c#,android,.net,file-upload,webview,C#,Android,.net,File Upload,Webview,我有一个注册页面,上面有一个文件上传按钮。这是C#中的aspx页面 当我在浏览器中运行它时,它工作正常。 当我在android应用程序的web视图中运行它时,它不会在android手机中启动文件菜单。 当我在android手机上的浏览器中运行页面时,它会很好地打开手机上的“文件”菜单 如何让它在web视图中工作 我的asp标签 <asp:FileUpload ID="FileUpload1" runat="server" Height="30px" Width="217px" />
<asp:FileUpload ID="FileUpload1" runat="server" Height="30px" Width="217px" />
我试图实现你提供的代码。我现在在FILECHOOSER\u RESULTCODE上收到一个错误。
错误是FILECHOOSER\u RESULTCODE无法解析为变量
case R.id.register:
//mWebView2 = (WebView) findViewById(R.id.webview);
//mWebView2.getSettings().setJavaScriptEnabled(true);
//mWebView2.loadUrl("http://www.bangmeornot.com/AndroidAddMember.aspx");
//mWebView2.setWebViewClient(new HelloWebViewClient());
mWebView2.setWebChromeClient(new WebChromeClient()
{
//The undocumented magic method override
//Eclipse will swear at you if you try to put @Override here
public void openFileChooser(ValueCallback<URL> uploadMsg) {
ValueCallback<URL> mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
BangMeorNot.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);
}
});
return true;
案例R.id.寄存器:
//mWebView2=(WebView)findViewById(R.id.WebView);
//mWebView2.getSettings().setJavaScriptEnabled(true);
//mWebView2.loadUrl(“http://www.bangmeornot.com/AndroidAddMember.aspx");
//setWebViewClient(新的HelloWebViewClient());
mWebView2.setWebChromeClient(新的WebChromeClient()
{
//未记录的magic方法重写
//如果您试图在此处放置@Override,Eclipse将对您发牢骚
public void openFileChooser(ValueCallback uploadMsg){
ValueCallback mUploadMessage=uploadMsg;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
BangMeorNot.this.startActivityForResult(Intent.createChooser(i,“文件选择器”),FILECHOOSER\u RESULTCODE);
}
});
返回true;
显然,股票浏览器可以完成文件上传。要在应用程序中启用此功能,您必须执行以下操作:
mWebView2.setWebChromeClient(new WebChromeClient()
{
//The undocumented magic method override
//Eclipse will swear at you if you try to put @Override here
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MyAwesomeActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);
}
});
mWebView2.setWebChromeClient(新的WebChromeClient())
{
//未记录的magic方法重写
//如果您试图在此处放置@Override,Eclipse将对您发牢骚
public void openFileChooser(ValueCallback uploadMsg){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
MyAwesomeActivity.this.startActivityForResult(Intent.createChooser(i,“文件选择器”),FILECHOOSER\u RESULTCODE);
}
});
注意:在不同版本的Android中,此功能的确切参数都发生了变化。对于适用于所有Android版本的解决方案,请签出或尝试使用中列出的参数。在我的aspx页面中,它收集注册信息并将其提交到数据库。我想让aspx页面工作,而不是在webview之外打开文件上传。我将如何在上面的代码中实现该代码。将您的函数放入我的第一个case语句中?您可能不需要startActivityForResult()。就让它成为startActivity(意图…)@David你能编辑你的答案来链接到或添加方法吗?因为很多问题似乎要重定向到你的question@user2309862我已经用你建议的链接更新了答案。
mWebView2.setWebChromeClient(new WebChromeClient()
{
//The undocumented magic method override
//Eclipse will swear at you if you try to put @Override here
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MyAwesomeActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);
}
});