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

问题描述,是使用友盟第三方分享图片到新浪微博上,到了分享界面右上角的图片一直不显示。。出现 读取图片流出错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);**

    }
}

你可能感兴趣的:(Android开发)