Canvas js 导出启用无法在 android 设备上运行

Canvas js export enable not working on android device

我正在研究 CANVASjS 并构建一个在图表上显示数据的示例应用程序。我已启用 export 以在 .png.jpeg 中保存图表并打印。在 ripple emulator 上部署它时,导出工作正常,但是当我在 android device 上部署它时,它不起作用。下面是我启用导出的代码部分。

var chart = new CanvasJS.Chart("container", {
            zoomEnabled: true,
            zoomType: "xy",
            animationEnabled: true,
            animationDuration: 2000,
            exportEnabled: true,
// all other chart code 
});

更新 1:

 function drawChart(data)
            {
                var chart = new CanvasJS.Chart("container", {
                    zoomEnabled: true,
                    zoomType: "xy",
                    animationEnabled: true,
                    animationDuration: 2000,
                    exportEnabled: true,
                    exportFileName: "Column Chart",
                    title: {
                        text: "Energy vs Date Time"
                    },
                    axisY: {
                        title: "EnergykWh",
                        interlacedColor: "#F8F1E4",
                        tickLength: 10,
                        suffix: "k",
                    },
                    legend: {
                        cursor: "pointer",
                        itemclick: function (e) {
                            if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
                                e.dataSeries.visible = false;
                            } else {
                                e.dataSeries.visible = true;
                            }
                            e.chart.render();
                        }
                    },
                    dataPointWidth: 20,
                    data: [{
                        //legendText: "EngergykWh",
                        showInLegend: true,
                        type: 'column',
                        //xValueType: "dateTime",
                        xValueFormatString: "DD/MMM/YYYY h:mm TT",
                        //xValueFormatString: "YYYY-MM-DD hh:mm:ss TT",
                        showInLegend: true,
                        name: "series1",
                        legendText: "EnergykWh",
                        dataPoints: data                          
                    }]
                });

                chart.render();
            }

更新二:

下面是信息图片和 link 的 OS 版本的 android 设备,我已经尝试过

Galaxy j7 2015

我不知道它的主要问题是什么。 任何帮助将不胜感激。

当您点击下载选项时,canvasJS 使用 HTML5 下载属性触发下载,这在支持它的浏览器中运行良好。

然而,当您在 Cordova 应用程序中点击相同的 link 时,其 运行 所在的网络视图不知道如何处理文件下载。因此什么也没有发生。

您似乎可以通过向应用添加一些自定义 Java 来自行启用此功能。不幸的是,我不是 Android Java 开发人员,但这个问题可能会对您有所帮助 - Download File inside WebView

您创建的 webview 中没有下载管理器,因此您需要手动处理下载功能。有两种方法可以从 webview 下载文件。

1.Using Android 下载管理器

2.Using 从 webview 打开的网络浏览器(内部使用 Android 下载管理器)

所需权限包括WRITE_EXTERNAL_STORAGE

然后为 webview 设置一个下载监听器。

webView.setDownloadListener(new DownloadListener(){
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength){
        //for downloading directly through download manager
        Request request = new 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);
    }
});

更多信息请参考以下链接:Link 1, Link2, Link 3, Link4

plugin 应该可以帮助您将图像另存为下载文件。

前提是你的 canvas 是 "myCanvas":

Canvas2Image.saveAsPNG(myCanvas, width, height)

Canvas2Image.saveAsJPEG(myCanvas, width, height)