Possible duplicate of :
I know, but the reason I still ask this question is I DID NOT UNDERSTAND THOSE ANSWERS. And I also know, that it’s my problem and those contributors did well. Not blaming anyone.
I’m a beginner at Android Studio and those answers were definitely not rookie friendly. cause I’ve been starring at them for like 20 hours till now.
Any way, here’s the code I have :
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webviewid); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("https://www.google.com/"); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webView.getSettings().setDomStorageEnabled(true); } }
Any help is greatly appreciated.
Advertisement
Answer
Try this
package com.example.filechooser; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.net.http.SslError; import android.os.Bundle; import android.webkit.SslErrorHandler; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { private final static int FILECHOOSER_RESULTCODE = 1; private ValueCallback<Uri[]> mUploadMessage; WebView mainWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainWebView = findViewById(R.id.main_web_view); mainWebView.setWebViewClient(new MyWebViewClient()); mainWebView.setWebChromeClient(new MyWebChromeClient()); mainWebView.getSettings().setJavaScriptEnabled(true); mainWebView.loadUrl("https://example.com"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == FILECHOOSER_RESULTCODE) { if (null == mUploadMessage || intent == null || resultCode != RESULT_OK) { return; } Uri[] result = null; String dataString = intent.getDataString(); if (dataString != null) { result = new Uri[]{ Uri.parse(dataString) }; } mUploadMessage.onReceiveValue(result); mUploadMessage = null; } } // ==================== // Web clients classes // ==================== /** * Clase para configurar el webview */ private class MyWebViewClient extends WebViewClient { // permite la navegacion dentro del webview @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } /** * Clase para configurar el chrome client para que nos permita seleccionar archivos */ private class MyWebChromeClient extends WebChromeClient { // maneja la accion de seleccionar archivos @Override public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { // asegurar que no existan callbacks if (mUploadMessage != null) { mUploadMessage.onReceiveValue(null); } mUploadMessage = filePathCallback; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); // set MIME type to filter MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FILECHOOSER_RESULTCODE ); return true; } } }