javascript - How to download a csv file created in JS to your android phone (webview) -


i want export csv file created in js , let people download on phone.

this js code creating file:

var createacsvfile = function () {     var arrayofdatatoexport = [];     (var k = 0; k < localstorage.length; k++) {         console.log([localstorage.key(k),json.parse(localstorage.getitem(localstorage.key(k)))]);         arrayofdatatoexport.push([localstorage.key(k),json.parse(localstorage.getitem(localstorage.key(k)))])     }       var csvrows = [];      for(var i=0, l=arrayofdatatoexport.length; i<l; ++i){         csvrows.push(arrayofdatatoexport[i].join(','));     }      var csvstring = csvrows.join("%0a");     var         = document.createelement('a');     a.href        = 'data:attachment/csv,' + csvstring;     a.target      = '_blank';     a.download    = 'exportfile.csv';      document.body.appendchild(a);     a.click(); };  createacsvfile(); 

this android code:

protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          view = (webview) this.findviewbyid(r.id.webview);         view.getsettings().setjavascriptenabled(true);         view.getsettings().setallowfileaccess(true);         view.getsettings().setdomstorageenabled(true);         view.getsettings().setusewideviewport(true);         view.getsettings().setloadwithoverviewmode(true);         view.setinitialscale(1);         view.getsettings().setjavascriptenabled(true);         view.getsettings().setsupportzoom(false);         view.setwebviewclient(new mybrowser(){              @override             public void onpagefinished(webview view, string url) {             //hide loading image             findviewbyid(r.id.imageloading1).setvisibility(view.gone);             //show webview             findviewbyid(r.id.webview).setvisibility(view.visible);         }           });         view.loadurl("file:///android_asset/www/index.html");         view.setwebchromeclient(new webchromeclient(){ });         view.setdownloadlistener(new downloadlistener() {             public void ondownloadstart(string url, string useragent,                                         string contentdisposition, string mimetype,                                         long contentlength) {                 intent = new intent(intent.action_view);                 i.setdata(uri.parse(url));                 startactivity(i);             }         });     } 

i error:

08-20 11:12:36.508 17111-17111/checker.coin.crypto.wingcrony.by.cryptocoinchecker e/androidruntime: fatal exception: main process: checker.coin.crypto.wingcrony.by.cryptocoinchecker, pid: 17111 android.content.activitynotfoundexception: no activity found handle intent { act=android.intent.action.view dat=data:attachment/csv,poloniex, currencyfortoshow,usd howtoorder,shortname passs,false whichexchangeyouuse,bitfinex } @ android.app.instrumentation.checkstartactivityresult(instrumentation.java:1809) @ android.app.instrumentation.execstartactivity(instrumentation.java:1523) @ android.app.activity.startactivityforresult(activity.java:3981) @ android.app.activity.startactivityforresult(activity.java:3933) @ android.app.activity.startactivity(activity.java:4272) @ android.app.activity.startactivity(activity.java:4240) @ checker.coin.crypto.wingcrony.by.cryptocoinchecker.mainactivity$3.ondownloadstart(mainactivity.java:153) @ com.android.webview.chromium.webviewcontentsclientadapter.ondownloadstart(webviewcontentsclientadapter.java:1195) @ org.chromium.android_webview.awcontentsclientcallbackhelper$myhandler.handlemessage(awcontentsclientcallbackhelper.java:126) @ android.os.handler.dispatchmessage(handler.java:111) @ android.os.looper.loop(looper.java:207) @ android.app.activitythread.main(activitythread.java:5728) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:789) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:679)

update

if add androidmanifest.xml same error:

<uses-permission android:name="android.permission.access_download_manager"/> 

what did generate data need export csv in js this:

var generatethedatatoexporttoarraystring = function () {     var arrayofdatatoexport = [];     (var k = 0; k < localstorage.length; k++) {         var keyname = (localstorage.key(k));         var data = json.parse(localstorage.getitem(localstorage.key(k))); }     var string = '[';     (var = 0; < arrayofdatatoexport.length; i++){         if (typeof arrayofdatatoexport[i][1] === "object"){             string += "[" + arrayofdatatoexport[i][0] + ",";             if (arrayofdatatoexport[i][1].length > 1 || arrayofdatatoexport[i][1].length === 0){                 if (arrayofdatatoexport[i][1].length === 0){                     string += '[' + '' + ']]';                 }                 else {                     (var k = 0; k < arrayofdatatoexport[i][1].length; k++){                         string += '[';                         (var l = 0; l < arrayofdatatoexport[i][1][k].length - 1; l++){                             string += arrayofdatatoexport[i][1][k][l]+ ",";                         }                          string += arrayofdatatoexport[i][1][k][arrayofdatatoexport[i][1][k].length - 1] + "],";                     }                     string = string.slice(0, -1);                     string += "],";                 }             }             else {                 string += "[";                 (var j = 0; j < arrayofdatatoexport[i][1].length - 2; j++){                     string += arrayofdatatoexport[i][1][j] + ",";                 }                 string += arrayofdatatoexport[i][1][arrayofdatatoexport[i][1].length - 1] + "]],";             }         }         else {             string += "[" + arrayofdatatoexport[i][0] + ",";             string += arrayofdatatoexport[i][1] + "],";         }      }     string = string.slice(0, -1);     string += "]";     console.log(string); }; 

you last thing log string. capture in java code this:

public void onconsolemessage(string message, int linenumber, string sourceid) {                 if (sourceid.equals("file:///android_asset/www/assets/js/parsetest.js") && linenumber == 184 ){                     generatenoteonsd(getbasecontext(),"export.csv", message);                 }             } 

this function generatenoteonsd:

public void generatenoteonsd(context context, string sfilename, string sbody) {         try {             file root = new file(environment.getexternalstoragedirectory(), "backup_data_for_altfolio");             if (!root.exists()) {                 root.mkdirs();             }             file gpxfile = new file(root, sfilename);             filewriter writer = new filewriter(gpxfile);             writer.append(sbody);             writer.flush();             writer.close();             toast.maketext(context, "saved", toast.length_short).show();         } catch (ioexception e) {             e.printstacktrace();         }     } 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -