文件上传按钮具有不一致的行为

时间:2012-09-27 00:48:38

标签: c# android .net file-upload webview

我有一个注册页面,上面有一个文件上传按钮。这是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;    

1 个答案:

答案 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中列出的参数。