国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 解決WebView無(wú)法上傳文件的問(wèn)題

2019-10-22 18:33:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Android 解決WebView無(wú)法上傳文件的問(wèn)題

Android原生的WebView并不支持上傳文件,需要我們自己實(shí)現(xiàn)相應(yīng)的方法。于是我把工作中的相關(guān)代碼記錄下來(lái)。下次直接拿來(lái)用就行了。一點(diǎn)一滴都是經(jīng)驗(yàn)

1。需要定義三個(gè)變量

 private ValueCallback<Uri[]> uploadMessageAboveL;  private final static int FILE_CHOOSER_RESULT_CODE = 10000;  private ValueCallback<Uri> uploadMessage;

2.重寫Activity相關(guān)方法

  private void openImageChooserActivity() {    Intent i = new Intent(Intent.ACTION_GET_CONTENT);    i.addCategory(Intent.CATEGORY_OPENABLE);    i.setType("image/*");    startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE);  }  @Override  protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    if (requestCode == FILE_CHOOSER_RESULT_CODE) {      if (null == uploadMessage && null == uploadMessageAboveL) return;      Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();      if (uploadMessageAboveL != null) {        onActivityResultAboveL(requestCode, resultCode, data);      } else if (uploadMessage != null) {        uploadMessage.onReceiveValue(result);        uploadMessage = null;      }    }  }  @TargetApi(Build.VERSION_CODES.LOLLIPOP)  private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) {    if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null)      return;    Uri[] results = null;    if (resultCode == Activity.RESULT_OK) {      if (intent != null) {        String dataString = intent.getDataString();        ClipData clipData = intent.getClipData();        if (clipData != null) {          results = new Uri[clipData.getItemCount()];          for (int i = 0; i < clipData.getItemCount(); i++) {            ClipData.Item item = clipData.getItemAt(i);            results[i] = item.getUri();          }        }        if (dataString != null)          results = new Uri[]{Uri.parse(dataString)};      }    }    uploadMessageAboveL.onReceiveValue(results);    uploadMessageAboveL = null;  }

3.重寫WebChromeClient中的相關(guān)方法

 // For Android < 3.0    public void openFileChooser(ValueCallback<Uri> valueCallback) {      uploadMessage = valueCallback;      openImageChooserActivity();    }    // For Android >= 3.0    public void openFileChooser(ValueCallback valueCallback, String acceptType) {      uploadMessage = valueCallback;      openImageChooserActivity();    }    //For Android >= 4.1    public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {      uploadMessage = valueCallback;      openImageChooserActivity();    }    // For Android >= 5.0    @Override    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {      uploadMessageAboveL = filePathCallback;      openImageChooserActivity();      return true;    }

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新竹市| 开封市| 兴义市| 五指山市| 铅山县| 青田县| 宁安市| 温宿县| 水城县| 海盐县| 兴国县| 彰化县| 黑河市| 灵台县| 沾化县| 海丰县| 临桂县| 大方县| 洱源县| 阳西县| 磐石市| 曲沃县| 宁强县| 建宁县| 云梦县| 佛学| 方正县| 揭西县| 宁安市| 延寿县| 文成县| 新野县| 嘉禾县| 恩施市| 安阳县| 溧水县| 文昌市| 绿春县| 行唐县| 婺源县| 柳州市|