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

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

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

2019-12-12 02:32:47
字體:
來(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.重寫(xiě)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.重寫(xiě)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ì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新乡县| 冕宁县| 沂水县| 阳原县| 嘉鱼县| 岐山县| 马公市| 临江市| 杨浦区| 永寿县| 观塘区| 夏河县| 吉水县| 翁源县| 县级市| 汕尾市| 行唐县| 云霄县| 连江县| 侯马市| 社旗县| 平乡县| 德惠市| 自贡市| 山西省| 科技| 黄山市| 盐亭县| 赣榆县| 珠海市| 南丹县| 哈尔滨市| 高雄市| 突泉县| 宜昌市| 武陟县| 日喀则市| 乐陵市| 高邮市| 景宁| 迁安市|