美文网首页
android 实现微信多张图片分享的功能

android 实现微信多张图片分享的功能

作者: 骑着蜗牛溜北二环 | 来源:发表于2017-11-16 14:15 被阅读0次

昨天公司老大通知客户改需求了,原来的微信分享改成分享多张图片,然后屁颠屁颠跑到微信平台看了以后

心里千万只草泥马狂奔而过,微信平台没有提供分享多张的SDK有木有啊,我们只能自己调用系统自带的分享功能实现。

先附上两张效果图,原谅我还不知道怎么录制上传视频。

这儿我先讲下流程,后面会附上源码。

首先我们讲下调起微信分享的方法。其实方法都是一样的,没有太大的区别。

//com.tencent.mm.ui.tools.ShareImgUi是分享到微信好友

//com.tencent.mm.ui.tools.ShareToTimeLineUI  是分享到微信朋友圈

//intent.put("kdescription","分享朋友圈的图片说明");

Intent intent = new Intent();

ComponentName comp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUi");

intent.setComponent(comp);

intent.setAction(Intent.ACTION_SEND_MULTIPLE);

intent.setType("image/*");

ArrayList(Uri) imageUris = new ArrayList();

for(File f : files){

imageUris.add(Uri.fromFile(f));

}

intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);

startActivity(intent);

其实来说分享的代码很简单。但是实际操作中就跳了更多的坑,我一个一个的记录下来。

实际分享的时候因为是调用系统本地的分享功能,所以分享的图片也就必须要存到本地,不然就会提示获取资源失败,只支持分享到朋友圈等等的问题。

那就要把图片存到本地了,这个方法网上也有很多,我这儿就直接用了网上一个朋友的代码,然后稍微修改了一下,后面附上代码。

因为考虑到如果存的图片太多就太占内存了,所以最多设置分享9张,每次调起分享的时候都会从iv_share_1.jpg开始

这个是直接调用微信的分享,所以调起分享的时候一定要判断手机里面是否已经安装了微信,如果没有安装还要掉微信分享就是直接崩溃掉。

都到了这一步就已经能调起微信的多张图片分享了,但是其中还是会有一个坑,也是卡了我不少时间。那就是android N系统以后分享的链接用file://.....

的时候会出现一个异常android.os.FileUriExposedException。网上虽然很多朋友都给出了用 v4包中的FileProvider来解决,但是不知道为什么,反正我的

项目导入后就报错了,最后在网上找了另一个方法在项目的BaseApplication的onCreate中用VmPolicy的方法解决。

//解决android N(>=24)系统以上分享 路径为file://时的 android.os.FileUriExposedException异常

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.N) {    

StrictMode.VmPolicy.Builder builder =newStrictMode.VmPolicy.Builder();

StrictMode.setVmPolicy(builder.build());

}

到这儿以后就搞定了微信的多张图片分享。下面就贴出我的代码,希望对大家有所帮助。

布局中就放入了两个按钮,通过按钮传递一个参数判断是分享朋友圈还是微信好友

MainActivity中的代码

/****@paramflag0分享给微信好友  1分享到朋友圈*/

private void shareImage(final intflag) {

//判断是否安装微信,如果没有安装微信 又没有判断就直达微信分享是会挂掉的

if(!Tools.isWeixinAvilible(mContext)){      

Toast.makeText(MainActivity.this,"您还没有安装微信",Toast.LENGTH_SHORT).show();

}else{

newThread(newRunnable(){

@Override

public void run() {

//这一步一定要clear,不然分享了朋友圈马上分享好友图片就会翻倍

files.clear();

try{

for(inti =0;i <stringItem.length;i++){

    File file = Tools.saveImageToSdCard(mContext,stringItem[i]);

    files.add(file);

}

Intent intent = new Intent();

ComponentName comp;

if(flag == 0){

comp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI");

}else{

comp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.SharreToTimeLineUI");

intent.putExtra("Kdescription","分享朋友圈的图片说明");

}

intent.setComponent(comp);

intent.setAction(Intent.ACTION_SEND_MULTIPLE);

intent.setType("image/*");

ArrayList imageUris =newArrayList();

for(File f :files) {                     

 imageUris.add(Uri.fromFile(f));

}                 

 intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);

startActivity(intent);

}catch(Exception e){ 

e.printStackTrace();

}      

}).start();}}

然后就是获取临时保存的图片的地址。

至于判断是否安装了微信这个大家在网上随便搜搜都能找到。

这样就大功告成了。分享都不用去等待微信平台的审核了。但是因为是调用系统的分享,所以也有不足的地方,那就是没有回调。

地址:https://github.com/XW837156540/ShareMoreImage

           http://blog.csdn.net/XuWei1213/article/details/78547684

相关文章

网友评论

      本文标题:android 实现微信多张图片分享的功能

      本文链接:https://www.haomeiwen.com/subject/knulvxtx.html