讓Android中的webview支持頁面中的文件上傳
android webview在默認情況下是不支持網頁中的文件上傳功能的;
如果在網頁中有<input type="file" />,在android webview中訪問時也會出現瀏覽文件的按鈕
但是點擊按鈕之后沒有反應...
那么如何能夠讓android的webview能夠響應,這個瀏覽按鈕呢?
我們需要為webview設置WebChromeClient,在WebChromeClient的實現類中覆蓋文件選擇的方法:
/***************** android中使用WebView來打開本機的文件選擇器 *************************/ // js上傳文件的<input type="file" name="fileField" id="fileField" />事件捕獲 // Android > 4.1.1 調用這個方法 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); context.startActivityForResult( Intent.createChooser(intent, "完成操作需要使用"), WebMainActivity.FILECHOOSER_RESULTCODE); } // 3.0 + 調用這個方法 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); context.startActivityForResult( Intent.createChooser(intent, "完成操作需要使用"), WebMainActivity.FILECHOOSER_RESULTCODE); } // Android < 3.0 調用這個方法 public void openFileChooser(ValueCallback<Uri> uploadMsg) { mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); context.startActivityForResult( Intent.createChooser(intent, "完成操作需要使用"), WebMainActivity.FILECHOOSER_RESULTCODE); } /************** end ***************/在設置WebChromeClient時,要傳入一個ValueCallback<Uri> mUploadMessage,同時傳入webview所在的Activity的對象;
在WebChromeClient的實現類中對應的文件選擇事件響應的方法里,使用webview所在的activity對象開啟一個android文件選擇器,
使用startActivityForResult方法,在開啟的文件選擇activity結束后需要返回一個值;在webview所在的activity中通過覆蓋Activity的onActivityResult方法,得到所需的結果,即選擇文件的url
* 返回文件選擇 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == FILECHOOSER_RESULTCODE) { mUploadMessage = wcci.getmUploadMessage(); if (null == mUploadMessage) return; Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData(); mUploadMessage.onReceiveValue(result); mUploadMessage = null; } }完成上述操作后就成功的實現了android webview支持文件上傳。。。
本文由用戶 pcimt 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!