弄月
弄月
  • 发布:2015-03-19 11:41
  • 更新:2021-05-31 17:11
  • 阅读:18623

安卓分享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);  
        }
12 关注 分享
DCloud_heavensoft 感受呼吸 CaiZD 非正常码农 Trust d***@sina.com yszhang 8***@qq.com 8***@qq.com l***@163.com helllo 1***@qq.com

要回复文章请先登录注册

johnsm

johnsm

把你的写法操作了一下 好像不能拉起微信 分享9张图片到朋友有其他的方法搞定吗
2021-05-31 17:11
2***@qq.com

2***@qq.com

上面的njs方法失败了,原因是因为安卓targetSdkVersion版本大于23的,系统不允许应用之间分享 直接访问的文件。你需要离线打包,添加一些东西,然后把图片文件,创建为一种新的协议,具体我忘了。。我也不会离线打包,所以目前也还没完成
var Intent = plus.android.importClass('android.content.Intent');
var intent = new Intent();

var Uri = plus.android.importClass('android.net.Uri');

var File = plus.android.importClass('java.io.File');

var ComponentName = plus.android.importClass('android.content.ComponentName');
var comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI")
intent.setComponent(comp);
intent.setAction(intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(intent.EXTRA_TEXT, '我是文案');

intent.putExtra(intent.EXTRA_STREAM, Uri.fromFile(new File('/storage/emulated/0/1/1.jpg')));
var act = plus.android.runtimeMainActivity();
act.startActivity(intent);

上面这个代码,在targetSdkVersion版本小于23的,绝对可以运行并唤起微信好友的分享
如果你是用的是HBuilder的基座,是不行的。因为他的版本是28+
你需要自己编译一个
2021-01-05 04:12
fsyang

fsyang

以及不支持多图了,目前只能搞到本地,通过自动或者手动发布
2020-07-01 18:34
2***@qq.com

2***@qq.com

我这样写,app要不拉不起来,要不就是直接回来了,获取不到资源。是怎么回事?
2020-05-29 14:39
QuinJet

QuinJet

回复 gangder :
我换了个方法,不直接分享到朋友圈,而是先下载到本地,然后手动发朋友圈,现在微信好像不允许发多图朋友圈了
2019-10-08 11:04
gangder

gangder

回复 QuinJet :
是不是提示undefaulted?
2019-10-03 10:20
QuinJet

QuinJet

现在这个还走不走的通啊,大佬们,几天没睡觉了,菜是原罪
2019-08-29 16:56
7***@qq.com

7***@qq.com

现在微信分享九图到朋友圈还能用么?
2019-05-27 18:07
慢慢成长

慢慢成长

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

深海智行

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