我有一个注册页面,上面有一个文件上传按钮。这是C#中的aspx页面。
当我在浏览器中运行它时它工作正常。 当我在Android应用程序的Web视图中运行它时,它不会启动Android手机中的文件菜单。 当我在我的Android手机上的浏览器中运行页面时,它可以很好地控制我手机上的文件菜单。
如何让它在网络视图中工作。
我的asp标签。
<asp:FileUpload ID="FileUpload1" runat="server" Height="30px" Width="217px" />
我的Android网页视图
case R.id.register:
mWebView2 = (WebView) findViewById(R.id.webview);
mWebView2.getSettings().setJavaScriptEnabled(true);
mWebView2.loadUrl("www.mysite.com/AndroidAddMember.aspx");
mWebView2.setWebViewClient(new HelloWebViewClient());
return true;
我尝试实现您提供的代码。我现在在FILECHOOSER_RESULTCODE上收到错误。 错误是FILECHOOSER_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;
答案 0 :(得分:1)
显然是用于完成文件上传的股票浏览器uses an undocumented method。以下是在应用中启用此功能所需执行的操作:
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);
}
});
注意:在各种Android版本中,此功能的确切参数已发生变化。有关适用于所有Android版本的解决方案,请查看this question,或尝试使用this answer中列出的参数。