java - Android - Programmatically Screenshot and Share to Facebook -
i have button
function take screenshot , share facebook. when try in samsung jellybean os
device working perfectly, when try bluestack jellybean os
, cheerymobile lollipop os
things not working, check logcat
, see error.
my code
onclick of button call takescreenshot();
private void takescreenshot() { date = new date(); android.text.format.dateformat.format("yyyy-mm-dd_hh:mm:ss", now); try { // image naming , path include sd card appending name choose file string mpath = environment.getexternalstoragedirectory().tostring() + "/" + + ".jpg"; // create bitmap screen capture view v1 = getwindow().getdecorview().getrootview(); v1.setdrawingcacheenabled(true); bitmap bitmap = bitmap.createbitmap(v1.getdrawingcache()); v1.setdrawingcacheenabled(false); file imagefile = new file(mpath); fileoutputstream outputstream = new fileoutputstream(imagefile); int quality = 100; bitmap.compress(bitmap.compressformat.jpeg, quality, outputstream); outputstream.flush(); outputstream.close(); sharephototofacebook(imagefile); } catch (throwable e.printstacktrace(); } } private void sharephototofacebook(file imagefile){ uri imageuri = uri.fromfile(imagefile); try { image = mediastore.images.media.getbitmap(this.getcontentresolver(), imageuri); } catch (ioexception e) { e.printstacktrace(); } facebooksdk.sdkinitialize(getapplicationcontext()); callbackmanager = callbackmanager.factory.create(); list<string> permissionneeds = arrays.aslist("publish_actions"); //this loginmanager helps eliminate adding loginbutton ui loginmanager = loginmanager.getinstance(); loginmanager.loginwithpublishpermissions(this, permissionneeds); loginmanager.registercallback(callbackmanager, new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { try{ sharephoto photo = new sharephoto.builder() .setbitmap(image) .setcaption(scorefinal) .build(); sharephotocontent content = new sharephotocontent.builder() .addphoto(photo) .build(); shareapi.share(content, null); final dialog dialog = new dialog(activityshare.this); dialog.requestwindowfeature(window.feature_no_title); dialog.setcontentview(r.layout.sucess_shared); dialog.show(); button btnok = (button) dialog.findviewbyid(r.id.btnok); btnok.setonclicklistener(new button.onclicklistener() { @override public void onclick(view v) { dialog.dismiss(); } }); }catch (exception e){ log.e("error on share", string.valueof(e)); } } @override public void oncancel() { log.w("oncancel", "canceled user"); // system.out.println("oncancel"); } @override public void onerror(facebookexception exception) { final dialog dialog = new dialog(activityshare.this); dialog.requestwindowfeature(window.feature_no_title); dialog.setcontentview(r.layout.sucess_shared); textview title = (textview)dialog.findviewbyid(r.id.titlesuccess); textview desc = (textview)dialog.findviewbyid(r.id.descriptionhere); title.settext("unsuccessfull"); desc.settext("something's wrong, please check internet connection , try again."); dialog.show(); button btnok = (button) dialog.findviewbyid(r.id.btnok); btnok.setonclicklistener(new button.onclicklistener() { @override public void onclick(view v) { dialog.dismiss(); } }); log.e("onerror", string.valueof(exception)); // system.out.println("onerror"); } }); }
logcat error
01-07 23:34:36.767 2024-2024/com.sample.app w/system.err: java.io.filenotfoundexception: /mnt/sdcard/thu jan 07 23:34:36 sgt 2016.jpg: open failed: einval (invalid argument) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ libcore.io.iobridge.open(iobridge.java:406) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ java.io.fileoutputstream.<init>(fileoutputstream.java:88) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ java.io.fileoutputstream.<init>(fileoutputstream.java:73) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ com.sample.app.activityshare.takescreenshot(activityshare.java:225) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ com.sample.app.activityshare.access$000(activityshare.java:42) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ com.sample.app.activityshare$1.onclick(activityshare.java:103) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ android.view.view.performclick(view.java:3511) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ android.view.view$performclick.run(view.java:14105) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ android.os.handler.handlecallback(handler.java:605) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ android.os.handler.dispatchmessage(handler.java:92) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ android.os.looper.loop(looper.java:137) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ android.app.activitythread.main(activitythread.java:4424) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ java.lang.reflect.method.invokenative(native method) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ java.lang.reflect.method.invoke(method.java:511) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:825) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ com.android.internal.os.zygoteinit.main(zygoteinit.java:592) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ dalvik.system.nativestart.main(native method) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: caused by: libcore.io.errnoexception: open failed: einval (invalid argument) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ libcore.io.posix.open(native method) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ libcore.io.blockguardos.open(blockguardos.java:110) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: @ libcore.io.iobridge.open(iobridge.java:390) 01-07 23:34:36.787 2024-2024/com.sample.app w/system.err: ... 16 more
i have no idea problem.
please me. thank you!!!
Comments
Post a Comment