android 调用本地微信自定义多图分享朋友圈,可放在share sdk中一起使用

原创 2016年03月08日 16:36:05


  最终的效果图,右下角微信多图为自定义调用系统分享,分享到微信。

  在你能正常调用share sdk的时候想在原本的基础上加自定义的分享非常的简单。


 

   它的官网已经给出了代码,但是给的不是很清楚。
   lz毕竟是新手所以去问了客服(问第一个给我的是错误答案,坑了我。问了第二个才让我写了出来),下面直接上代码。

   在源码里面有写好的添加方法,直接调用即可(在OnekeyShare类里)


 在你调用分享的类里加上:

//自定义分享,微信多图分享
Bitmap enableLogo = BitmapFactory.decodeResource(context.getResources(), R.mipmap.sharepic);
Bitmap disableLogo = BitmapFactory.decodeResource(context.getResources(), R.mipmap.sharepic);
String label = "微信多图";
View.OnClickListener listener = new View.OnClickListener() {
    public void onClick(View v) {

    }
};
      上面的两个logo是显示的图片,label是下面的名字,再接着下面就是点击你加分享的点击事件了。

  上面的写完调用添加自定义分享的方法:

oks.setCustomerLogo(enableLogo, disableLogo, label, listener);
// 启动分享GUI
oks.show(context);
  oks是  OnekeyShare oks = new OnekeyShare

  这样子就可以在share sdk的原基础上完成你自定义添加的分享了。



   下面说调用系统的分享,多图分享到微信:




  这个是最终分享的效果图,你还可以自行的添加或删除分享的图片。

  微信官网给出的分享只能分享一张图片,想要发多张(微信朋友圈最多只能发九张图片)怎么办呢?每个手机的系统分享可调微信多图分享。 好了不扯了,下面上代码:

 

private static Runnable saveFileRunnable = new Runnable(){
    @Override
    public void run() {
        try {
            for (int i = 0; i < 9; i++) {
                String[] ss = stringss[i].split("/");
                boolean saveTrue = MyTools.downloadLyWithName(AppStatic.Url_Base+stringss[i],ss[5], fileName, mContext);
            }
            // 遍历 SD 卡下 .png 文件通过微信分享
            File file = new File(Environment.getExternalStorageDirectory() + "/BangMai/images/" + fileName);
            File[] files = file.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    if (pathname.getName().endsWith(".jpg")) {
                        return true;
                    }
                    return false;
                }
            });

            Intent intent = new Intent();

            ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
            intent.setComponent(comp);
            intent.setAction(Intent.ACTION_SEND_MULTIPLE);
            intent.setType("image/*");

            ArrayList<Uri> imageUris = new ArrayList<Uri>();
            for (File f : files) {
                imageUris.add(Uri.fromFile(f));
            }
            intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
            intent.putExtra("Kdescription", "我分享成功啦!!!!!!");  // 这里可要可不要,这句话的意思是直接会显示在发表时候的文字
            mContext.startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
};

     调用方法:

new Thread(saveFileRunnable).start();
      在你的OnClick事件里面加上这句就可以了。

     因为是调用系统分享的方法,所以你要分享的图片必须要下载到本地分享的时候再从本地取出。try里面的第一个for是我自己写的下载图片的方法,你可以换成你自己写的。

    这样子就可以在你的程序中调用系统的多图分享,分享到微信了。



     最面是我的图片下载类:


// 保存带名称的图片
    public static Boolean downloadLyWithName(String url, String imgName, String fileName, Context mContext) throws Exception {
        Bitmap bitmap1 = null;
        byte[] data1 = getImage(url);
        if (data1 != null) {
            bitmap1 = BitmapFactory.decodeByteArray(data1, 0, data1.length);// bitmap
            saveImgWithName(bitmap1, imgName, fileName, mContext);
            return true;
        } else
            return false;
    }

    public static byte[] getImage(String path) throws Exception {
        URL url = new URL(path);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(5 * 1000);
        conn.setRequestMethod("GET");
        InputStream inStream = conn.getInputStream();
        if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
            return readStream(inStream);
        }
        return null;
    }

    //保存图片带名称
    public static void saveImgWithName(Bitmap bitmap, String imgName, String fileName, Context mContext) {
        if (bitmap != null) {
            File appDir = new File(Environment.getExternalStorageDirectory() + "/BangMai/");
            if (!appDir.exists()) {
                appDir.mkdirs();
            }
            if (fileName != null){
                appDir = new File(Environment.getExternalStorageDirectory() + "/BangMai/images/" + fileName);
                if (!appDir.exists()) {
                    appDir.mkdirs();
                }
            }
            File file = null;
            file = new File(appDir, imgName);
            try {
                FileOutputStream fos = new FileOutputStream(file);
                if (null != fos) {
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                    fos.flush();
                    fos.close();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

//            // 其次把文件插入到系统图库
//            try {
//                MediaStore.Images.Media.insertImage(mContext.getContentResolver(), file.getAbsolutePath(), imgName, null);
//            } catch (FileNotFoundException e) {
//                e.printStackTrace();
//            }
//            // 最后通知图库更新
//            mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/BangMai/")));
        }
    }
      



                     end

版权声明:本文为博主原创文章,未经博主允许不得转载。

[Android] 微信分享多张图片。

微信原生是不支持多图片分享的,但是Android原生是支持的
  • windowsxp2014
  • windowsxp2014
  • 2016年11月02日 15:16
  • 1725

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

昨天公司老大通知客户改需求了,原来的微信分享改成分享多张图片,然后屁颠屁颠跑到微信平台看了以后 心里千万只草泥马狂奔而过,微信平台没有提供分享多张的SDK有木有啊,我们只能自己调用系统自带的分享功能实...
  • XuWei1213
  • XuWei1213
  • 2017年11月16日 10:00
  • 2029

安卓调用系统自带分享功能分享文字,分享大图片,仿好奇心日报分享长图片(不用申请微信微博官方sdk就能直接分享)

当前安卓分享一共三种方式 1,调用安卓系统自带分享功能(可以分享大图) 2,调用微信,微博支付宝等自己的官方分享sdk 3,用友盟,shareSdk等集成好的sdk...
  • qiushi_1990
  • qiushi_1990
  • 2016年12月13日 16:55
  • 6383

Android开发:分享文字跟多张图片到微信朋友圈

在工作中碰到需要分享9张图片到微信朋友圈,za
  • weidongjian
  • weidongjian
  • 2014年11月21日 16:12
  • 8435

使用QQ互联Android SDK 实现本地图片的QQ定向分享

在较新一版的QQ互联Android SDK 中,提供了一个定向分享的办法:void com.tencent.tauth.Tencent.shareToQQ(Activity arg0, Bundle ...
  • buptlzx
  • buptlzx
  • 2013年08月05日 15:12
  • 16014

Android自定义View分享——仿微信朋友圈图片合并效果

仿微信朋友圈图片合并效果。
  • u010707039
  • u010707039
  • 2016年10月18日 14:29
  • 1909

Android、IOS直接打开QQ或微信对应好友的聊天窗口

实现像网页上QQ客服一样点击某按钮直接调用出聊天工具,在浏览器中可以通过JS代码打开QQ并弹出聊天界面,一般作为客服QQ使用。而在移动端腾讯貌似没有公布提供类似API,但是却可以使用schema模式来...
  • chaoyong918
  • chaoyong918
  • 2015年07月14日 19:12
  • 5695

【模仿】调用微信聊天功能和分享功能

今天整理个不是问题的问题,没学到啥,主要完成功能: 老大要求能调用手机号码然后通过微信聊, 我去,说白了老大看到了应用-通讯录plus-的微信功能,要我模仿。 首先,坑啊,我以为是开放的功能,就去...
  • izy0001989624
  • izy0001989624
  • 2013年12月15日 15:43
  • 11096

不用sdk实现分享多张本地图片功能

1.分享到微信好友: Intent weixinintent = new Intent(); ComponentName cop = new ComponentName("com....
  • my_worldlet
  • my_worldlet
  • 2016年09月05日 17:42
  • 794

android 调用本地微信自定义多图分享朋友圈,可放在share sdk中一起使用

Android share sdk自定义分享,调用系统多图分享到微信
  • qq_27030835
  • qq_27030835
  • 2016年03月08日 16:36
  • 1056
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 调用本地微信自定义多图分享朋友圈,可放在share sdk中一起使用
举报原因:
原因补充:

(最多只允许输入30个字)