2012-09-27 59 views
-1

我有一個註冊頁面,上面有一個文件上傳按鈕。這是C#中的aspx頁面。具有不一致行爲的文件上傳按鈕

當我在瀏覽器中運行它時,它工作正常。 當我在android應用程序的web視圖中運行它時,它不會在您的android手機中啓動文件菜單。 當我在我的android手機上的瀏覽器中運行該頁面時,它會拉近我手機上​​的文件菜單。

如何讓它在Web視圖中工作。

我的asp標籤。

<asp:FileUpload ID="FileUpload1" runat="server" Height="30px" Width="217px" /> 

我的Android Web視圖

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; 

我試圖執行你的代碼,你suplied。我現在在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

顯然是股票瀏覽器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中列出的參數。

+0

在我的aspx頁面上,它收集註冊信息並將其提交給數據庫。我想讓aspx頁面不能打開webview的文件上傳。 – CsharpBeginner

+0

我將如何在上面的代碼中實現該代碼。把你的功能,並把它放在我的第一個案例陳述? – CsharpBeginner

+0

你可能不需要startActivityForResult()。只要做出startActivity(意圖...) – David