Saturday, 15 February 2014

javascript - Unable to run show image preview on android webview? -



javascript - Unable to run show image preview on android webview? -

firstly may sound duplicate question unable solutions via previous posted questions.i have jsp page through selecting images pc , showing preview of image working fine on chrome browser of android phone also.but when run on webview document.getelementbyid.click() function not working unable image preview.

this jsp page:

<!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp page</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> </script> <script> function img_prvw(id1,id2)/*******************show preview of image*******************/ { var ofiles = document.getelementbyid(id1).files; var valid_extensions = /(.jpg|.jpeg|.png)$/i; if(!(valid_extensions.test(document.getelementbyid(id1).files[0].name))) { document.getelementbyid('er').innerhtml="select jpg or png image"; } else { var reader = new filereader(); reader.readasdataurl(ofiles[0]); reader.onload= function (e) { document.getelementbyid(id2).src=e.target.result; }; } } </script> </head> <body> <input type="file" style="display: none;" id="advrts_img" name="advrts_img" onchange="img_prvw('advrts_img','advrts_img_prvw')"> <img src="images/img_place.png" id="advrts_img_prvw" alt="" class="cursor margin_top10" style="width:100px;height:100px" onclick="document.getelementbyid('advrts_img').click()"> </body> </html>

this android webview code:

package com.example.sample_webview; import android.app.activity; import android.content.intent; import android.content.res.configuration; import android.graphics.bitmap; import android.net.uri; import android.os.bundle; import android.view.view; import android.webkit.valuecallback; import android.webkit.webchromeclient; import android.webkit.webview; import android.webkit.webviewclient; import android.widget.progressbar; public class mainactivity extends activity { /** called when activity first created. */ webview web; private valuecallback<uri> muploadmessage; private final static int filechooser_resultcode = 1; @override protected void onactivityresult(int requestcode, int resultcode, intent intent) { if (requestcode == filechooser_resultcode) { if (null == muploadmessage) return; uri result = intent == null || resultcode != result_ok ? null : intent.getdata(); muploadmessage.onreceivevalue(result); muploadmessage = null; } } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); web = (webview) findviewbyid(r.id.wview); web = new webview(this); web.getsettings().setjavascriptenabled(true); web.loadurl("http://minkme.org/minkmeuser/image_preview1.jsp"); web.setwebviewclient(new mywebclient()); web.setwebchromeclient(new webchromeclient() { // undocumented magic method override // eclipse swear @ if seek set @override here // android 3.0+ public void openfilechooser(valuecallback<uri> uploadmsg) { muploadmessage = uploadmsg; intent = new intent(intent.action_get_content); i.addcategory(intent.category_openable); i.settype("image/*"); mainactivity.this.startactivityforresult( intent.createchooser(i, "file chooser"), filechooser_resultcode); } // android 3.0+ public void openfilechooser(valuecallback uploadmsg, string accepttype) { muploadmessage = uploadmsg; intent = new intent(intent.action_get_content); i.addcategory(intent.category_openable); i.settype("*/*"); mainactivity.this.startactivityforresult( intent.createchooser(i, "file browser"), filechooser_resultcode); } // android 4.1 public void openfilechooser(valuecallback<uri> uploadmsg, string accepttype, string capture) { muploadmessage = uploadmsg; intent = new intent(intent.action_get_content); i.addcategory(intent.category_openable); i.settype("image/*"); mainactivity.this.startactivityforresult( intent.createchooser(i, "file chooser"), mainactivity.filechooser_resultcode); } }); setcontentview(web); } public class mywebclient extends webviewclient { @override public void onpagestarted(webview view, string url, bitmap favicon) { // todo auto-generated method stub super.onpagestarted(view, url, favicon); } @override public boolean shouldoverrideurlloading(webview view, string url) { // todo auto-generated method stub view.loadurl(url); homecoming true; } @override public void onpagefinished(webview view, string url) { // todo auto-generated method stub super.onpagefinished(view, url); } } // flipscreen not loading 1 time again @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); } // handle "back" key press event webview go previous // screen. /* * @override public boolean onkeydown(int keycode, keyevent event) { if * ((keycode == keyevent.keycode_back) && web.cangoback()) { web.goback(); * homecoming true; } homecoming super.onkeydown(keycode, event); } */ }

i want browse images android phone using input type="file".

in short : on here input file input file in webview

after time , test, have found document.getelementbyid.click work well. have test next change

test.html

<!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp page</title> <script src="jquery-1.11.1.min.js"> </script> <script> function img_prvw(id1,id2)/*******************show preview of image*******************/ { console.log("call of img_prvw"); var ofiles = document.getelementbyid(id1).files; var valid_extensions = /(.jpg|.jpeg|.png)$/i; if(!(valid_extensions.test(document.getelementbyid(id1).files[0].name))) { document.getelementbyid('er').innerhtml="select jpg or png image"; } else { var reader = new filereader(); reader.readasdataurl(ofiles[0]); reader.onload= function (e) { document.getelementbyid(id2).src=e.target.result; }; } } function onadvrtsimgprvwclick() { console.log('clickevent'); document.getelementbyid('advrts_img').click(); } </script> </head> <body> <input type="file" style="display: none;" id="advrts_img" name="advrts_img" onclick="console.log('click on input');" onchange="img_prvw('advrts_img','advrts_img_prvw')"> <img src="images/img_place.png" id="advrts_img_prvw" alt="" class="cursor margin_top10" style="width:100px;height:100px" onclick="onadvrtsimgprvwclick()"> </body> </html>

mainactivity.java

public class mainactivity extends activity { private webview mwebview; static final string tag = "mainactivity"; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mwebview = (webview) findviewbyid(r.id.webview1); mwebview.getsettings().setjavascriptenabled(true); // enable javascript final activity activity = this; mwebview.setwebviewclient(new webviewclient() { public void onreceivederror(webview view, int errorcode, string description, string failingurl) { toast.maketext(activity, description, toast.length_short) .show(); } }); mwebview.setwebchromeclient(new webchromeclient() { @override public boolean onconsolemessage(consolemessage cm) { string msg = cm.message() + " -- line " + cm.linenumber() + " of " + cm.sourceid(); switch (cm.messagelevel()) { case error: log.e(tag, msg); break; case log: case tip: log.i(tag, msg); break; case warning: log.w(tag, msg); break; case debug: default: log.d(tag, msg); break; } homecoming true; } }); mwebview.loadurl("file:///android_asset/test.html"); //setcontentview(mwebview); } }

and it's appear console show message 'click on input', have been correctly call, it's on alter not called properly.

javascript android jsp webview

No comments:

Post a Comment