从 webView android studio 中的 dataURL 保存 csv

问题描述

所以我有一个生成 dataUrl csv 的网站,现在我想使用 android webView 打开该网站。除了将 dataUrl 保存到 csv 之外,一切都很好。我可以在 android 浏览器中使用它,但不能在 webView 中使用。我读过一些帖子 (this one) 说下载管理器不能在 android webView 中使用 dataURL,但由于我对 android webView 很陌生,我不确定我是否正确理解。

这是我的应用程序的主要活动

public class MainActivity extends AppCompatActivity {
private  WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try
    {
        this.getSupportActionBar().hide();
    }
    catch (NullPointerException e){}

    setContentView(R.layout.activity_main);

    webView = (WebView) findViewById(R.id.webview);

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setJavaScriptCanopenWindowsAutomatically(true);
    webView.getSettings().setDomStorageEnabled(true);

    webView.setWebViewClient(( new WebViewClient()));

    webView.setWebChromeClient(new WebChromeClient() {

        @Override
        public boolean onjsAlert(WebView view,String url,String message,final JsResult result) {
            AlertDialog dialog = new AlertDialog.Builder(view.getContext()).
                    setTitle("Download").
                    setMessage(message).
                    setPositiveButton("OK",new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog,int which) {
                            //do nothing
                        }
                    }).create();
            dialog.show();
            result.confirm();
            return true;
        } });
    webView.setDownloadListener(new DownloadListener() {
        @Override
        public void onDownloadStart(String url,String userAgent,String contentdisposition,String mimeType,long contentLength) {
            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
            request.allowScanningByMediaScanner();
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
            request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,"download");
            DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
            dm.enqueue(request);
        }
    });
    webView.loadUrl("myWebURLHere");
}}

当我尝试下载 dataUrl 时,在 logcat 上出现此错误

java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs: data:text/csv;charset=utf-8,%EF%BB%BF%22Time%22%2C%22PH%22%2C%22TDS%20(ppm)%22%0D%0A%221609303256%22%2C%227%22%2C%2225%22%0D%0A%221609331150%22%2C%220.00%22%2C%22600.00%22%0D%0A%221609331165%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331176%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331187%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331198%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331211%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331221%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331232%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331243%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331254%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331265%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331276%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609331286%22%2C%227.33%22%2C%22600.00%22%0D%0A%221609332484%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332499%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332509%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332520%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332531%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332541%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332552%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332562%22%2C%2225.00%22%2C%22100.00%22%0D%0A%221609332573%22%2C%2225.00%22%2C%22100.00%22%0D%0A
    at android.app.DownloadManager$Request.<init>(DownloadManager.java:529)

无论如何,我可以通过 webView 应用程序将 dataUrl 保存到我的手机吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)