最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android WebView 不支持 H5 input type="file" 解決方法

 更新時間:2017年06月05日 16:27:23   作者:H_VK  
這篇文章主要介紹了Android WebView 不支持 H5 input type="file" 解決方法,需要的朋友可以參考下

最近因為趕項目進度,因此將本來要用原生控件實現(xiàn)的界面,自己做了H5并嵌入webview中。發(fā)現(xiàn)點擊H5中 input type="file" 標簽 不能打開android資源管理器。

通過網(wǎng)絡搜索發(fā)現(xiàn)是因為 android webview 由于考慮安全原因屏蔽了 input type="file" 這個功能 。

經(jīng)過不懈的努力,以及google 翻譯的幫助 在 stackoverflow 中找到了解決的方法。

具體可以理解為 重寫webview 的WebChromeClient ,廢話不多說直接貼代碼:

private ValueCallback<Uri> mUploadMessage;
public ValueCallback<Uri[]> uploadMessage;
public static final int REQUEST_SELECT_FILE = 100;
private final static int FILECHOOSER_RESULTCODE = 2;
webview.setWebChromeClient(new WebChromeClient(){
    // For 3.0+ Devices (Start)
    // onActivityResult attached before constructor
    protected void openFileChooser(ValueCallback uploadMsg, String acceptType)
    {
      mUploadMessage = uploadMsg;
      Intent i = new Intent(Intent.ACTION_GET_CONTENT);
      i.addCategory(Intent.CATEGORY_OPENABLE);
      i.setType("image/*");
      startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);
    }
    // For Lollipop 5.0+ Devices
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
    {
      if (uploadMessage != null) {
        uploadMessage.onReceiveValue(null);
        uploadMessage = null;
      }
      uploadMessage = filePathCallback;
      Intent intent = fileChooserParams.createIntent();
      try
      {
        startActivityForResult(intent, REQUEST_SELECT_FILE);
      } catch (ActivityNotFoundException e)
      {
        uploadMessage = null;
        Toast.makeText(getBaseContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
        return false;
      }
      return true;
    }
    //For Android 4.1 only
    protected 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/*");
      startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);
    }
    protected void openFileChooser(ValueCallback<Uri> uploadMsg)
    {
      mUploadMessage = uploadMsg;
      Intent i = new Intent(Intent.ACTION_GET_CONTENT);
      i.addCategory(Intent.CATEGORY_OPENABLE);
      i.setType("image/*");
      startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
    }
  });
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
  if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
  {
    if (requestCode == REQUEST_SELECT_FILE)
    {
      if (uploadMessage == null)
        return;
      uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
      uploadMessage = null;
    }
  }
  else if (requestCode == FILECHOOSER_RESULTCODE)
  {
    if (null == mUploadMessage)
      return;
    // Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment
    // Use RESULT_OK only if you're implementing WebView inside an Activity
    Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
    mUploadMessage.onReceiveValue(result);
    mUploadMessage = null;
  }
  else
    Toast.makeText(getBaseContext(), "Failed to Upload Image", Toast.LENGTH_LONG).show();
}

以上所述是小編給大家介紹的Android WebView 不支持 H5 input type="file" 解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android實現(xiàn)消息總線的幾種方式詳解

    Android實現(xiàn)消息總線的幾種方式詳解

    關(guān)于Android消息傳遞方式比較多,一般的系統(tǒng)原生實現(xiàn)方式比如Handler?、自定義廣播、接口回調(diào),以及三方工具?EventBus?、RxBus?等,下面這篇文章主要給大家介紹了關(guān)于Android實現(xiàn)消息總線的幾種方式,需要的朋友可以參考下
    2022-06-06
  • Android實現(xiàn)顯示和隱藏密碼功能的示例代碼

    Android實現(xiàn)顯示和隱藏密碼功能的示例代碼

    在前端中我們知道用javascript就可以可以很容易實現(xiàn)密碼的顯示與隱藏,本文將大家詳細介紹Android是如何實現(xiàn)顯示和隱藏密碼功能的,需要的可以參考一下
    2022-06-06
  • Android Studio 3.1.X中導入項目的正確方法分享

    Android Studio 3.1.X中導入項目的正確方法分享

    這篇文章主要給大家介紹了關(guān)于Android Studio 3.1.X中導入項目的正確方法,文中一步步將解決的方法以及可能遇到的問題介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • Android實現(xiàn)登錄注冊頁面(上)

    Android實現(xiàn)登錄注冊頁面(上)

    這篇文章主要為大家詳細介紹了Android實現(xiàn)登錄注冊頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 輕松實現(xiàn)功能強大的Android刮獎效果控件(ScratchView)

    輕松實現(xiàn)功能強大的Android刮獎效果控件(ScratchView)

    這篇文章主要為大家詳細介紹了ScratchView如何一步步打造萬能的Android刮獎效果控件,,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • android線程消息機制之Handler詳解

    android線程消息機制之Handler詳解

    這篇文章主要為大家詳細介紹了android線程消息機制之Handler的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • uniapp打包Android的apk(原生APP-云打包)及發(fā)布測試全過程

    uniapp打包Android的apk(原生APP-云打包)及發(fā)布測試全過程

    uni-app本地打包apk需要提前做非常多的準備工作,而且可能會勸退一些開發(fā)者,下面這篇文章主要給大家介紹了關(guān)于uniapp打包Android的apk(原生APP-云打包)及發(fā)布測試的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Android  Handler 機制實現(xiàn)原理分析

    Android Handler 機制實現(xiàn)原理分析

    本文主要介紹 Android Handle機制實現(xiàn)的原理,這里整理了詳細的關(guān)于Handler的資料以及工作流程和實際應用,有興趣的小伙伴可以參考下
    2016-08-08
  • Android模擬登錄評論CSDN實現(xiàn)代碼

    Android模擬登錄評論CSDN實現(xiàn)代碼

    本篇文章主要介紹了Android模擬登錄評論CSDN實現(xiàn)代碼,可以實現(xiàn)登陸發(fā)表評論到官方網(wǎng)站,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • AndroidStudio不自動添加新創(chuàng)建的文件到VCS的解決辦法

    AndroidStudio不自動添加新創(chuàng)建的文件到VCS的解決辦法

    這篇文章主要介紹了AndroidStudio不自動添加新創(chuàng)建的文件到VCS的解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論

家居| 资溪县| 鄱阳县| 仪陇县| 双桥区| 平山县| 滕州市| 彭水| 乐亭县| 上栗县| 南投县| 通城县| 桓仁| 虹口区| 灵宝市| 甘谷县| 徐汇区| 张家口市| 红安县| 河间市| 辽宁省| 蒙城县| 汉川市| 垫江县| 勐海县| 盱眙县| 新晃| 松潘县| 冷水江市| 银川市| 西乌| 历史| 准格尔旗| 高青县| 贺兰县| 平舆县| 枞阳县| 潍坊市| 嘉峪关市| 金沙县| 万宁市|