java - Android WebView for lollipop -
excuse me simple question,i'm beginner java , android developer. have developed app of webview, have choose file button , not working in lollipop. i've got image upload funtion gaunt face website. how should upload songs, videos, & documents?
the following code working image upload in lollipop.i use onshowfilechooser lollipop instead of openfilechooser
here code:
@suppresslint("setjavascriptenabled") public class mainactivity extends actionbaractivity { webview webview; progressbar progressbar; private valuecallback<uri> muploadmessage; private final static int filechooser_resultcode=1; protected static final int input_file_request_code = 0; @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 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); webview webview = (webview) findviewbyid(r.id.webview); progressbar = (progressbar) findviewbyid(r.id.progressbar); webview.setwebviewclient(new mywebclient()); webview.getsettings().setjavascriptenabled(true); webview.loadurl("http:/www.freemailindia.in"); webview.setwebchromeclient(new webchromeclient() { //the undocumented magic method override //eclipse swear @ if try put @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); } //for 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("*/*"); mainactivity.this.startactivityforresult( intent.createchooser( i, "file chooser" ), mainactivity.filechooser_resultcode ); intent chooserintent = new intent(intent.action_chooser); startactivityforresult(chooserintent, input_file_request_code); } @override public boolean onshowfilechooser(webview webview, valuecallback<uri[]> filepathcallback, filechooserparams filechooserparams) { intent = new intent(intent.action_get_content); i.addcategory(intent.category_openable); i.settype("/*"); mainactivity.this.startactivityforresult( intent.createchooser( i, "file browser" ), mainactivity.filechooser_resultcode ); i.putextra(intent.extra_intent, i); i.putextra(intent.extra_title, "file browser"); i.putextra(intent.extra_initial_intents, i); // todo auto-generated method stub return true; } }); } public class mywebclient extends webviewclient { @override public void onpagefinished(webview view, string url) { // todo auto-generated method stub super.onpagefinished(view, url); progressbar.setvisibility(view.gone); } @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 return super.shouldoverrideurlloading(view, url); } } @override public boolean onkeydown(int keycode, keyevent event) { // todo auto-generated method stub return super.onkeydown(keycode, event); } }
logcat
05-29 13:05:33.421: d/gralloc_goldfish(2026): emulator without gpu emulation detected. 05-29 13:05:38.111: i/dalvikvm(2026): not find method android.view.viewgroup.onnestedscrollaccepted, referenced method android.support.v7.internal.widget.actionbaroverlaylayout.onnestedscrollaccepted 05-29 13:05:38.111: w/dalvikvm(2026): vfy: unable resolve virtual method 11342: landroid/view/viewgroup;.onnestedscrollaccepted (landroid/view/view;landroid/view/view;i)v 05-29 13:05:38.111: d/dalvikvm(2026): vfy: replacing opcode 0x6f @ 0x0000 05-29 13:05:38.111: i/dalvikvm(2026): not find method android.view.viewgroup.onstopnestedscroll, referenced method android.support.v7.internal.widget.actionbaroverlaylayout.onstopnestedscroll 05-29 13:05:38.111: w/dalvikvm(2026): vfy: unable resolve virtual method 11348: landroid/view/viewgroup;.onstopnestedscroll (landroid/view/view;)v 05-29 13:05:38.111: d/dalvikvm(2026): vfy: replacing opcode 0x6f @ 0x0000 05-29 13:05:38.121: i/dalvikvm(2026): not find method android.support.v7.internal.widget.actionbaroverlaylayout.stopnestedscroll, referenced method android.support.v7.internal.widget.actionbaroverlaylayout.sethideoncontentscrollenabled 05-29 13:05:38.121: w/dalvikvm(2026): vfy: unable resolve virtual method 9036: landroid/support/v7/internal/widget/actionbaroverlaylayout;.stopnestedscroll ()v 05-29 13:05:38.121: d/dalvikvm(2026): vfy: replacing opcode 0x6e @ 0x000e 05-29 13:05:38.121: i/dalvikvm(2026): not find method android.content.res.typedarray.getchangingconfigurations, referenced method android.support.v7.internal.widget.tinttypedarray.getchangingconfigurations 05-29 13:05:38.121: w/dalvikvm(2026): vfy: unable resolve virtual method 364: landroid/content/res/typedarray;.getchangingconfigurations ()i 05-29 13:05:38.121: d/dalvikvm(2026): vfy: replacing opcode 0x6e @ 0x0002 05-29 13:05:38.121: i/dalvikvm(2026): not find method android.content.res.typedarray.gettype, referenced method android.support.v7.internal.widget.tinttypedarray.gettype 05-29 13:05:38.121: w/dalvikvm(2026): vfy: unable resolve virtual method 386: landroid/content/res/typedarray;.gettype (i)i 05-29 13:05:38.121: d/dalvikvm(2026): vfy: replacing opcode 0x6e @ 0x0002 05-29 13:05:38.131: v/webviewchromium(2026): binding chromium background looper looper (main, tid 1) {b20213f0} 05-29 13:05:38.141: i/chromium(2026): [info:library_loader_hooks.cc(112)] chromium logging enabled: level = 0, default verbosity = 0 05-29 13:05:38.141: i/browserprocessmain(2026): initializing chromium process, renderers=0 05-29 13:05:38.151: w/chromium(2026): [warning:proxy_service.cc(888)] pac support disabled because there no system implementation 05-29 13:05:38.161: e/chromium(2026): [error:gl_surface_egl.cc(153)] no suitable egl configs found. 05-29 13:05:38.161: e/chromium(2026): [error:gl_surface_egl.cc(620)] glsurfaceegl::initializeoneoff failed. 05-29 13:05:38.161: e/chromium(2026): [error:gl_surface_egl.cc(153)] no suitable egl configs found. 05-29 13:05:38.161: e/chromium(2026): [error:gl_surface_egl.cc(620)] glsurfaceegl::initializeoneoff failed. 05-29 13:05:38.161: e/chromium(2026): [error:gpu_info_collector.cc(86)] gfx::glsurface::initializeoneoff() failed 05-29 13:05:38.311: d/dalvikvm(2026): gc_for_alloc freed 147k, 3% free 6790k/6984k, paused 2ms, total 2ms 05-29 13:05:38.321: w/awcontents(2026): nativeondraw failed; clearing background color. 05-29 13:05:38.881: i/choreographer(2026): skipped 146 frames! application may doing work on main thread. 05-29 13:05:38.881: w/awcontents(2026): nativeondraw failed; clearing background color. 05-29 13:05:40.291: i/choreographer(2026): skipped 34 frames! application may doing work on main thread. 05-29 13:05:43.371: i/choreographer(2026): skipped 49 frames! application may doing work on main thread. `
Comments
Post a Comment