C# 具有不一致行为的文件上载按钮

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" />

我有一个注册页面,上面有一个文件上传按钮。这是C#中的aspx页面

当我在浏览器中运行它时,它工作正常。 当我在android应用程序的web视图中运行它时,它不会在android手机中启动文件菜单。 当我在android手机上的浏览器中运行页面时,它会很好地打开手机上的“文件”菜单

如何让它在web视图中工作

我的asp标签

<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);       
    }  
});