友盟分享图片到新浪微博报错:读取图片流出错java.net.MalformedURLException: Protocol not found:

来源:互联网 发布:安卓手机刷windows系统 编辑:程序博客网 时间:2024/04/26 21:03

问题描述,是使用友盟第三方分享图片到新浪微博上,到了分享界面右上角的图片一直不显示。。出现 读取图片流出错java.net.MalformedURLException: Protocol not found: 和open failed: EACCES (Permission denied)/pen failed: EISDIR (Is a directory) 这些错误;

答案:分享代码:

public static void share2SinaWithImage(final Context context, String content, ScrollView scrollView,
View shutImageView, View photoImageView, View textView) {
mController.getConfig().setSsoHandler(new SinaSsoHandler());
SinaShareContent sina = new SinaShareContent();
sina.setShareContent(content);
if (!UItools.isFastDoubleClick()) {
Bitmap bitmap = screenShot(scrollView, shutImageView, photoImageView, textView);
if (null == bitmap) {
((BaseActivity)context).showToast(“分享到微博失败!”);
return;
}
sina.setShareImage(new UMImage(context, bitmap));
mController.setShareMedia(sina);
postShare(context, SHARE_MEDIA.SINA);

    }}

/*分享到sina微博的自定义执行方法/
private static void postShare(Context context, SHARE_MEDIA platform) {
mController.postShare(context, platform, new SnsPostListener() {

        @Override        public void onComplete(SHARE_MEDIA platform, int eCode, SocializeEntity entity) {        }        @Override        public void onStart() {        }    });}

问题就出现在下面两行代码:
1. mController.setShareMedia(sina);
2. postShare(context, SHARE_MEDIA.SINA);

是一个service还没有执行好就执行2; 1是保存图片,2.是显示图片;在手机没有新浪微博客户端时会很快速的跳转到网页界面,所以1保存图片还没有ok,2显示图片的方法就从文件里面读取,所以报错;解决办法是延迟执行方法2;

正确代码是:
public static void share2SinaWithImage(final Context context, String content, ScrollView scrollView,
View shutImageView, View photoImageView, View textView) {
mController.getConfig().setSsoHandler(new SinaSsoHandler());
SinaShareContent sina = new SinaShareContent();
sina.setShareContent(content);
if (!UItools.isFastDoubleClick()) {
Bitmap bitmap = screenShot(scrollView, shutImageView, photoImageView, textView);
if (null == bitmap) {
((BaseActivity)context).showToast(“分享到微博失败!”);
return;
}
sina.setShareImage(new UMImage(context, bitmap));
mController.setShareMedia(sina);
**new Handler().postDelayed(new Runnable() {

            @Override            public void run() {                postShare(context, SHARE_MEDIA.SINA);            }        }, 100);**    }}
0 0
原创粉丝点击