2013-03-15 86 views
0

這個問題遇到了好幾次,雖然似乎沒有任何解釋可行。 (或者也許我沒有在這個稱爲互聯網的混亂中找到它)...如何使上傳按鈕在Android應用程序中工作?

我正在開發一個android應用程序,它打開一個包含上傳按鈕的HTML頁面。它在WebView中不起作用。

我曾嘗試:http://m0s-programming.blogspot.in/2011/02/file-upload-in-through-webview-on.html

但是Eclipse給出警告說"openFileChooser(ValueCallback uploadMsg) is never used locally"。該應用程序應與Android 2.2(API 8)及更高版本一起使用。

它給一些錯誤,我想由於WebView.setWebChromeClient(new CustomWebChromeClient()

錯誤放置

有人可以幫我在這?

+1

仔細閱讀文章:'4)關於openFileChooser從未在本地使用的警告是正常的,事實上我很確定它應該給你警告。如果它不適合你,這個問題就在別的地方。「# – vorrtex 2013-03-16 10:26:01

+0

@vorrtex它確實給了我警告。但即使忽視這一點,該應用程序實際上在我的模擬器上崩潰。 – Chirag 2013-03-16 10:36:14

+1

我在文章的評論中發現了一個示例應用程序,經過一些小修改後,它就可以工作。 https://dl.dropbox.com/u/8047386/file-attach-cordova-upload-jqm-master_fixed.zip。我相信你的應用程序中有不同的東西可以壓制,而上傳工作正常。 – vorrtex 2013-03-16 11:06:35

回答

5

有關文件上傳的類似問題在這裏回答:File Upload in WebView

而且不同版本的Android需要不同的方法:https://stackoverflow.com/posts/12746435/edit

下面是活動的完全自足代碼:

public class FileAttachmentActivity extends Activity { 

    private ValueCallback<Uri> mUploadMessage; 
    private final static int FILECHOOSER_RESULTCODE = 1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     WebView wv = new WebView(this); 
     wv.setWebViewClient(new WebViewClient()); 
     wv.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) { 
       FileAttachmentActivity.this.showAttachmentDialog(uploadMsg); 
      } 

      // For Android > 3.x 
      public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { 
       FileAttachmentActivity.this.showAttachmentDialog(uploadMsg); 
      } 

      // For Android > 4.1 
      public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { 
       FileAttachmentActivity.this.showAttachmentDialog(uploadMsg); 
      } 
     }); 

     this.setContentView(wv); 

     wv.loadUrl("https://dl.dropbox.com/u/8047386/posttest.htm"); 

    } 

    private void showAttachmentDialog(ValueCallback<Uri> uploadMsg) { 
     this.mUploadMessage = uploadMsg; 

     Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
     i.addCategory(Intent.CATEGORY_OPENABLE); 
     i.setType("*/*"); 

     this.startActivityForResult(Intent.createChooser(i, "Choose type of attachment"), FILECHOOSER_RESULTCODE); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == FILECHOOSER_RESULTCODE) { 
      if (null == this.mUploadMessage) { 
       return; 
      } 
      Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData(); 
      this.mUploadMessage.onReceiveValue(result); 
      this.mUploadMessage = null; 
     } 
    } 
} 
+0

你知道如何使它在Android 4.4上工作嗎? – jcesarmobile 2013-11-11 07:47:35

+0

@jcesar WebChromeClient類在4.4中沒有更改,所以它應該繼續工作。但我現在無法驗證,我不知道您有什麼錯誤。 – vorrtex 2013-11-11 11:21:38

+0

沒有任何錯誤,按鈕只是無所事事,沒有日誌或錯誤跟蹤。 – jcesarmobile 2013-11-11 11:28:20

-2

一些設備上傳按鈕沒有激活使用像三星S4和筆記3

相關問題