弄月
弄月
  • 发布:2015-03-19 11:41
  • 更新:2019-05-11 17:17
  • 阅读:10571

安卓分享9宫格图片到微信

分类:Native.js

首先感谢@DCloud_Android_磊子,test_weixin_share_mul_pic这个是他写给我的,我只做了一点小改动
用法,先setShareMsg把当前页面的商品名称、相册存到全局变量msg,然后调用shareToWechat弹出actionSheet选择分享到朋友圈或者发送给好友。
函数代码如下:

  function setShareMsg(goodsdata){  
            msg.content = msg.title = goodsdata.goods_name;  
            /* 分享图片 */  
            mui.each(goodsdata.pictures, function(i, n){  
                msg.pictures.push( n.url );  
            });  
            /* 分享链接 */  
            msg.href = mui.constMap.SERVER_HOST + "/mobile/goods.php?id=" + goodsdata.id ;  
            msg.thumbs.push("_www/72.png");  
            var userdata = getCachedUser();  
            if(userdata ){  
                msg.href += "&father=" + userdata.user.wx.wxid;  
            }  
            msg.brief = goodsdata.goods_brief;  
            getShortUrl(msg.href, function(result){  
                if(! result.error_code){  
                    msg.url_short = result[0].url_short;  
                }  
            });  
        }  
                  /**  
         * 发送分享消息  
         * @param {plus.share.ShareService} s  
         */  
        function shareMessage(ex) {  
            var pictures = [];  
            var pic_unloaded = msg.pictures.length ;  
            function onStateChanged( d, status ) {  
                switch(d.state){  
                    case 4:  
                        if(status == 200){  
                            console.log("图片下载完成:" + d.filename);  
                            pictures.push( plus.io.convertLocalFileSystemURL(d.filename) );  
                            pic_unloaded --;  
                            if(pic_unloaded == 0){  
                                copyToClip( msg.title + (msg.url_short || msg.href) + "\r\n" + msg.brief );  
                                mui.toast("标题已复制,请长按黏贴");  
                                console.log(JSON.stringify(pictures));  
                                test_weixin_share_mul_pic(ex, pictures, msg.title + (msg.url_short || msg.href) + "\r\n" + msg.brief);  
                            }  
                        } else {  
                            mui.toast("下载图片失败");  
                        }  
                        break;  
                    case 1:  
                        console.log("下载开始");  
                        break;  
                    case 2:  
                        console.log("请求已响应");   
                        break;  
                    case 3:  
                        console.log("下载进行中");  
                        break;  
                    default:  
                        console.log("state: " + d.state);  
                        break;  
                }  
            }  
            mui.toast("下载图片中,即将打开微信分享...");  
            mui.each(msg.pictures, function(i, n){  
                // 创建下载任务  
                var dtask = plus.downloader.createDownload( n );  
                dtask.addEventListener( "statechanged", onStateChanged, false );  
                dtask.start();  
            });  
        }  
        function shareToWechat(){  
            var shareto = ['com.tencent.mm.ui.tools.ShareToTimeLineUI', 'com.tencent.mm.ui.tools.ShareImgUI'];  
            plus.nativeUI.actionSheet( {title:"分享到微信",cancel:"取消",buttons:[{title:"分享到微信朋友圈"},{title:"发送给微信好友"}]}, function(e){  
                console.log( "User pressed: "+ e.index);  
                shareMessage(shareto[e.index - 1]);  
            } );  
        }  
        function test_weixin_share_mul_pic(ex, pics, description){  
            var Intent = plus.android.importClass('android.content.Intent');  
            var ComponentName = plus.android.importClass('android.content.ComponentName');  
            var ArrayList = plus.android.importClass('java.util.ArrayList');  
            var Uri = plus.android.importClass('android.net.Uri');  
            var Environment = plus.android.importClass('android.os.Environment');  
            var File = plus.android.importClass('java.io.File');  
            //var sdcardDir = plus.android.invoke(Environment.getExternalStorageDirectory(),'getAbsolutePath');  
            var intent = new Intent();  
            var localComponentName = new ComponentName("com.tencent.mm", ex);  
            intent.setComponent(localComponentName);  
            intent.setAction("android.intent.action.SEND_MULTIPLE");  
            intent.setType("image/*");  
            var localArrayList = new ArrayList();  
            for(var i =0;i< pics.length;i++){  
                var filePath = pics[i]; //sdcardDir +   
                //console.log('filePath=' + filePath);  
                localArrayList.add(Uri.fromFile(new File(filePath)));  
            }  
            intent.putParcelableArrayListExtra("android.intent.extra.STREAM", localArrayList);  
            intent.putExtra(Intent.EXTRA_TEXT, description);     
            var act = plus.android.runtimeMainActivity();  
            act.startActivity(intent);  
        }  
11 关注 分享
DCloud_heavensoft 感受呼吸 CaiZD 非正常码农 Trust dalian234@sina.com yszhang 827887@qq.com 810726685@qq.com liujzwudi@163.com helllo

要回复文章请先登录注册

慢慢成长

慢慢成长

现在是不是无法使用了?分享时候会报 '获取资源失败,仅支持分享照片至朋友圈'
2019-05-11 17:17
深海智行

深海智行

回复 3265357339@qq.com:
QQ:2579915825
2018-12-07 12:04
3265357339@qq.com

3265357339@qq.com

回复 深海智行:
求指导
2018-09-07 11:38
505058216@qq.com

505058216@qq.com

加上intent = Intent.createChooser(intent, description);属性,可以单独打开APP
2018-08-03 15:50
dalian234@sina.com

dalian234@sina.com

回复 2275325041@qq.com:
我有,联系QQ 19864038
2018-05-29 17:15
m@tanhaibo.com

m@tanhaibo.com

如果使用网络图片,能不能直接分享,而不需要下载。
2018-04-20 14:21
深海智行

深海智行

关于iOS多图分享,也可以联系我,指导解决。
2018-04-06 20:10
freedemon

freedemon

ios实现此功能需要离线打包进行插件开发,可以自己去研究一下原生怎么实现,不愿意研究的可以付费让我帮忙集成。
2018-03-16 09:49
freedemon

freedemon

回复 2275325041@qq.com:
ios实现此功能需要离线打包进行插件开发,可以自己去研究一下原生怎么实现,不愿意研究的可以付费让我帮忙集成。
2018-03-16 09:49
2275325041@qq.com

2275325041@qq.com

请问IOS上怎么实现分享9宫格图片到微信朋友圈
2017-12-29 17:52
2275325041@qq.com

2275325041@qq.com

回复 macless@qq.com:
同关注,
2017-12-29 17:21
macless@qq.com

macless@qq.com

请问IOS上怎么实现分享9宫格图片到微信朋友圈
2017-12-25 23:34
zhangyongbo51job@163.com

zhangyongbo51job@163.com

请问下,ios怎么处理?
2017-12-22 19:09
菜鸡

菜鸡

看样子是要离线打包啊
2017-12-07 14:38
Android_磊子

Android_磊子

分享多图,且带文字描述。
来试试:intent.putExtra('Kdescription', '我是图片描述');
2017-11-27 12:34
378860743@qq.com

378860743@qq.com

求助,按照上面文章,已经实现了分享多张图片到朋友圈,但是要怎么能将文字内容一起粘贴到朋友圈文字输入框呢?

还有个问题,如果使用网络图片,能不能直接分享,而不需要下载。
@DCloud_heavensoft @DCloud_Android_磊子
2017-11-26 17:08
林暗风

林暗风

act.startActivity 报错 你们怎么解决的
2017-06-29 15:50
云钦

云钦

可读性不怎么好
2016-07-07 22:08
Never_xk

Never_xk

想请问下,除了文本框,其他标签的文本无法被选中,怎么解决,css属性修改了也不起作用,大神可否解惑?
2016-03-23 14:09
DCloud_heavensoft

DCloud_heavensoft

建议编辑一下,使用markdown,把代码高亮起来
2015-03-19 16:23