2023年12月17日发(作者:)

private ValueCallback uploadMessage; private ValueCallback uploadMessageAboveL; private final static int FILE_CHOOSER_RESULT_CODE = 10000; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_main); WebView webview = (WebView) findViewById(_view); assert webview != null; WebSettings settings = tings(); WideViewPort(true); dWithOverviewMode(true); aScriptEnabled(true); ChromeClient(new WebChromeClient() { // For Android < 3.0 public void openFileChooser(ValueCallback 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 valueCallback, String acceptType, String capture) { uploadMessage = valueCallback; openImageChooserActivity(); } // For Android >= 5.0 @Override public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, ooserParams fileChooserParams) { uploadMessageAboveL = filePathCallback; openImageChooserActivity(); return true; } }); String targetUrl = "file:///android_asset/"; l(targetUrl); } private void openImageChooserActivity() { Intent i = new Intent(_GET_CONTENT); egory(RY_OPENABLE); e("image/*"); startActivityForResult(Chooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { vityResult(requestCode, resultCode, data); if (requestCode == FILE_CHOOSER_RESULT_CODE) { if (null == uploadMessage && null == uploadMessageAboveL) return; Uri result = data == null || resultCode != RESULT_OK ? null : a(); if (uploadMessageAboveL != null) { onActivityResultAboveL(requestCode, resultCode, data); } else if (uploadMessage != null) { iveValue(result); uploadMessage = null;

uploadMessage = null; } } } @TargetApi(N_OP) private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) { if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null) return; Uri[] results = null; if (resultCode == _OK) { if (intent != null) { String dataString = aString(); ClipData clipData = pData(); if (clipData != null) { results = new Uri[mCount()]; for (int i = 0; i < mCount(); i++) { item = mAt(i); results[i] = (); } } if (dataString != null) results = new Uri[]{(dataString)}; } } iveValue(results); uploadMessageAboveL = null; }}