精华内容
下载资源
问答
  • 苹果。安卓手机微信怎么一键转发朋友圈 内容 或者小视频 免费安装的
  • 现在非常流行微信助手,可以一键转发朋友圈发的消息包括小视屏、文字图片等等。他这个功能怎么实现的?网上貌似有微信源码,但是我没有找到具体的答案、所以特此求原理,求解决方法。
  • 一键转发朋友圈到 APP

    千次阅读 2015-09-04 17:16:37
    目前市面上用的微商转发工具插件效果图: (可以去百度搜索:微商助手,粉加加,) 参考视频:http://v.youku.com/v_show/id_XMTI3MTgyMTYzNg==.html?from=s1.8-1-1.2 ... 以上的功能是一键转发朋友圈到朋友圈

    目前市面上用的微商转发工具插件效果图:

    (可以去百度搜索:微商助手,粉加加,)

    参考视频:http://v.youku.com/v_show/id_XMTI3MTgyMTYzNg==.html?from=s1.8-1-1.2

    http://v.youku.com/v_show/id_XOTI1NTE0OTUy.html?from=s1.8-1-1.2

    以上的功能是一键转发朋友圈到朋友圈。 最老的版本是靠触动精灵脚本实现的, 但是最新技术是靠微信接口实现的。

     

     

    现在我们的要求是:

     

    一键转发朋友圈数据到 我们的APP上传(比如看到某条朋友圈图片漂亮,点一下转发,程序自动把改条朋友圈的所有图片,(图片张数,顺序,文字)原样不变,搬迁到我们的APP上传界面。

    插件实现:可以一键转发当前朋友圈9图或6图,一键转发下载图片及复制文字信息,并自动跳转至APP上传界面,手动点上传发送即可!(省去手动一张张图片另存再插入,自动复制图片及文字)

    附加注明:图片需保证原比例、大小、像素等,不需要压缩图片质量,请确保图片清晰度。

     

    以下截图是我们自己开发的商城APP;

     


    这样做的目的是 方便用户上传数据到我们APP平台,提高了效率。 不用一张张图片另存到手机,然后再返回APP一张张图片插入进去点上传。

    提供的思路: IOS设备必须越狱才可实现,另外这个开发应该是小插件cydia。抓微信朋友圈的包,分析出里面的朋友圈数据,然后在插件中复制记录,在app中粘贴上传

    插件实现功能:可以一键转发当前朋友圈9图或6图,一键下载图片及复制文字信息,并自动跳转至朋友圈分享界面,点发送即可!

    附加注明:图片需保证原比例、大小、像素等,不需要压缩图片质量,请确保图片清晰度。

    展开全文
  • 微闪朋友圈一键转发

    2016-09-02 18:44:33
    微闪朋友圈一键转发app
  • 微信朋友圈一键转发插件 java 代码实现。本代码从系统角度分析如何破解微信朋友圈转发,无需安装XPOSE,只用于学术研究. 支持6.6.7
  • V信朋友圈一键转发

    2016-02-16 06:00:06
    V信朋友圈一键转发
  • // 处理分享 wx.ready(function () { // 在页面加载时就调用相关接口,如:分享到朋友圈、获取位置信息等接口 wx.checkJsApi({ jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline'], success: function ...

    如果不处理,很丑。

    加上下面的代码,就会好看多了。

    // 初始化

    wx.config({

    debug: false,

    appId: '{$weixin.appId}',

    timestamp: '{$weixin.timestamp}',

    nonceStr: '{$weixin.nonceStr}',

    signature: '{$weixin.signature}',

    jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline']

    });

    // 处理分享

    wx.ready(function () {

    // 在页面加载时就调用相关接口,如:分享到朋友圈、获取位置信息等接口

    wx.checkJsApi({

    jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline'],

    success: function (res) {

    if (res.errMsg == 'checkJsApi:ok') {

    // 分享给朋友

    wx.onMenuShareAppMessage({

    title: '{$vote_info.title}', // 分享标题

    desc: '{$vote_info.sub_title}', // 分享描述

    link: '{$share_url}', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

    imgUrl: '{$vote_info.share_img}', // 分享图标

    type: '', // 分享类型,music、video或link,不填默认为link

    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空

    // 取消已经监听不到了

    success: function () {

    alert("恭喜你,分享成功");

    },

    // 用户取消分享后执行的回调函数

    cancel: function () {

    alert("取消分享");

    }

    });

    // 分享到朋友圈

    wx.onMenuShareTimeline({

    title: '{$vote_info.title}', // 分享时的标题

    link: '{$share_url}', // 分享时的链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

    //用户确认分享后执行的回调函数

    imgUrl: '{$vote_info.share_img}', // 分享时显示的图标

    success: function () {

    alert("恭喜你,分享成功");

    },

    //用户取消分享后执行的回调函数

    cancel: function () {

    alert("取消分享");

    }

    });

    } else {

    alert("失败了.......");

    }

    }

    });

    });

    // 初始化错误监听

    wx.error(function (res) {

    alert("error");

    });

    展开全文
  • * 拉起微信,朋友圈功能类,支持单张图片,多张图片,文字 */ public class ShareUtils { PopupWindow popupWindow; Context context; private String path;//单张图片路径 private String content; private...

    转载地址:http://blog.csdn.net/zflove168/article/details/79216773


    package com.derivative.client.util;
    
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.drawable.BitmapDrawable;
    import android.net.Uri;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.PopupWindow;
    
    import com.derivative.client.R;
    
    import java.io.File;
    import java.util.ArrayList;
    
    /**
     * 拉起微信,朋友圈功能类,支持单张图片,多张图片,文字
     */
    public class ShareUtils {
    
        PopupWindow popupWindow;
        Context context;
        private String path;//单张图片路径
        private String content;
        private Button btn;
        private Uri[] uris;//多张图片路径uri数组
        public ShareUtils(Context context, String content){
            this.context=context;
          //  this.path=path;
            this.content=content;
    
          //  this.btn=btn;
            
            showpop();
        }
    
        public void setUri(Uri[] uris){
            this.uris = uris;
        }
    
        public void setPath(String path){
            this.path = path;
        }
    
        private void showpop() {
            View view= LayoutInflater.from(context).inflate(
                    R.layout.share_view, null);
            ImageView img_weixin= (ImageView) view.findViewById(R.id.share_weixin);
            ImageView img_pyq= (ImageView) view.findViewById(R.id.share_pengyouquan);
            popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT, true);
            popupWindow.setBackgroundDrawable(new BitmapDrawable()); // 点击返回按钮popwindow消失
    
            img_weixin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (StringUtils.isWeixinAvilible(context)) {// 判断是否安装微信客户端
                       // shareweixin(path);
                        shareWXSomeImg(context,uris);
                        // login(SHARE_MEDIA.WEIXIN);
                    } else {
                        ActivityUtil.showToast(context, "请安装微信客户端");
                    }
    
                    popupWindow.dismiss();
                }
            });
            img_pyq.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    if (StringUtils.isWeixinAvilible(context)) {// 判断是否安装微信客户端
                     //   shareweipyq(path,content);//拉起微信朋友圈带一张图片
                        shareweipyqSomeImg(context,uris);//拉起微信朋友圈带多张图片
                        // login(SHARE_MEDIA.WEIXIN);
                    } else {
                        ActivityUtil.showToast(context, "请安装微信客户端");
                    }
                    popupWindow.dismiss();
                }
            });
    
            popupWindow.showAtLocation( LayoutInflater.from(context).inflate(
                    R.layout.activity_posterxq, null).findViewById(R.id.img_share), Gravity.BOTTOM, 0, 0);// 先设置popwindow的所有参数,最后再show
    
        }
    
        /**
         * 拉起微信好友发送单张图片
         * */
        private void shareweixin(String path){
            Uri uriToImage = Uri.fromFile(new File(path));
            Intent shareIntent = new Intent();
            //发送图片到朋友圈
            //ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
            //发送图片给好友。
            ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
            shareIntent.setComponent(comp);
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
            shareIntent.setType("image/jpeg");
            context.startActivity(Intent.createChooser(shareIntent, "分享图片"));
        }
        /**
         * 拉起微信朋友圈发送单张图片
         * */
        private void shareweipyq(String path,String content){
            Uri uriToImage = Uri.fromFile(new File(path));
            Intent shareIntent = new Intent();
            //发送图片到朋友圈
            ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
            //发送图片给好友。
    //        ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
            shareIntent.setComponent(comp);
            shareIntent.putExtra("Kdescription", content);
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
            shareIntent.setType("image/jpeg");
            context.startActivity(Intent.createChooser(shareIntent, "分享图片"));
        }
    
        /**
         * 拉起微信朋友圈发送多张图片
         * */
        private void shareweipyqSomeImg(Context context,Uri[] uri){
            Intent shareIntent = new Intent();
            //1调用系统分析
            shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
            shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    
            //2添加图片数组
            ArrayList<Uri> imageUris = new ArrayList<>();
            for (int i = 0; i < uri.length; i++) {
                imageUris.add(uri[i]);
            }
    
            shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);
            shareIntent.setType("image/*");
    
            //3指定选择微信
            ComponentName componentName = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareToTimeLineUI");
            shareIntent.setComponent(componentName);
    
            //4开始分享
            context.startActivity(Intent.createChooser(shareIntent,"分享图片"));
        }
    
        /**
         * 拉起微信发送多张图片给好友
         * */
        private void shareWXSomeImg(Context context,Uri[] uri){
            Intent shareIntent = new Intent();
            //1调用系统分析
            shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
            shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    
            //2添加图片数组
            ArrayList<Uri> imageUris = new ArrayList<>();
            for (int i = 0; i < uri.length; i++) {
                imageUris.add(uri[i]);
            }
    
            shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);
            shareIntent.setType("image/*");
    
            //3指定选择微信
            ComponentName componentName = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI");
            shareIntent.setComponent(componentName);
    
            //4开始分享
            context.startActivity(Intent.createChooser(shareIntent,"分享图片"));
        }
    }

    展开全文
  • 微商管家可以一键添加好友转发朋友圈 1、微商管家可以一键自动添加附近好友; 2、微信一键自动转发朋友圈视频; 3、微信一键自动转发朋友圈图片; 4、微信一键添加群里面所有好友; 5、自动点赞; 6、自动评论; 仅...
  • 朋友圈截图生成App支持一键生成超牛X朋友圈截图,并且内容支持自定义修改,可用于个人应付各类强制要求转发朋友圈的情形,请勿批量生成截图或将截图用于造谣诽谤、微商宣传等非法或令人反感的用途。 软件截图
  • 一键转发按钮,直接把多张图片拉起朋友圈,自动填充图片,或者多张图片发给好友,文字可以复制过去直接粘贴, 实现思路: 1.先把接口请求下来的多张图片保存到本地,这里是用Glide做的本地缓存 //缓存图片到...

    效果图

    一键转发按钮,直接把多张图片拉起朋友圈,自动填充图片,或者多张图片发给好友,文字可以复制过去直接粘贴,

    实现思路:

    1.先把接口请求下来的多张图片保存到本地,这里是用Glide做的本地缓存

     

    //缓存图片到本地
    for (int i = 0; i < images.size(); i++) {
        Glide.with(this)
                .load(images.get(i).getPic_url()).asBitmap().into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                ImgFileUtils.saveBitmap(PosterXQActivity.this, resource, StringUtils.setDateTime());
            }
        });
    }
    /**工具类代码  * author:zhengfeng on 2017/8/21 10:13  */ 
    public class ImgFileUtils { 
    /**  * 生成文件夹路径  */
      public static String SDPATH = Environment.getExternalStorageDirectory() + "/WS_IMG/"; 
      public static void saveImageToGallery(Context context, Bitmap bmp) {
      // 首先保存图片 
      File appDir = new File(Environment.getExternalStorageDirectory(), "/WS_IMG/"); 
          if (!appDir.exists()) { appDir.mkdir();  } String fileName = System.currentTimeMillis() + ".jpg";
          File file = new File(appDir, fileName); 
          try {
          FileOutputStream fos = new FileOutputStream(file);
          bmp.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(context.getContentResolver(),  file.getAbsolutePath(), fileName, null);
        } catch (FileNotFoundException e) { e.printStackTrace(); 
        } // 最后通知图库更新  //
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));
        } 
        /**  
        * 将图片压缩保存到文件夹  * 
        * @param bm 
        * @param picName 
        */ 
        
        public static void saveBitmap(Context context,Bitmap bm, String picName) {
            try {
            // 如果没有文件夹就创建一个程序文件夹 
            if (!isFileExist("")) { 
                File tempf = createSDDir("");
            } File f = new File(SDPATH, picName + ".JPEG");
            Log.e("filepath",f.getAbsolutePath()); 
            PosterXQImgCache.getInstance().setImgCache(f.getAbsolutePath());//缓存保存后的图片路径 
            // 如果该文件夹中有同名的文件,就先删除掉原文件 
            if (f.exists()) { f.delete();
            } 
            FileOutputStream out = new FileOutputStream(f);
            bm.compress(Bitmap.CompressFormat.JPEG, 90, out); 
            out.flush(); 
            out.close(); 
            Log.e("imgfile", "已经保存"); 
            //保存图片后发送广播通知更新数据库 
            Uri uri = Uri.fromFile(f); 
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
                } 
            } 
                /**  
                * 质量压缩 并返回Bitmap  *
                * @param image  
                * 要压缩的图片 
                * @return 压缩后的图片 
                */  private Bitmap compressImage(Bitmap image) {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                // 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中  
                int options = 100;
                while (baos.toByteArray().length / 1024 > 100) {
                // 循环判断如果压缩后图片是否大于100kb,大于继续压缩  
                baos.reset();
                // 重置baos即清空baos 
                image.compress(Bitmap.CompressFormat.JPEG, options, baos);
                // 这里压缩options%,把压缩后的数据存放到baos中 
                options -= 10;
                // 每次都减少10 
                } 
                ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
                // 把压缩后的数据baos存放到ByteArrayInputStream中 
                Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
                // 把ByteArrayInputStream数据生成图片  return bitmap; 
                } 
                /**  
                * 质量压缩  
                *  
                * @param bitmap  
                * @param picName 
                */  
                public static void compressImageByQuality(final Bitmap bitmap,  String picName) { 
                // 如果没有文件夹就创建一个程序文件夹 
                if (!isFileExist("")) { 
                    try { 
                        File tempf = createSDDir("");
                    } catch (IOException e) {
                    // TODO Auto-generated catch block  
                        e.printStackTrace();
                        } 
                    }
                    File f = new File(SDPATH, picName + ".JPEG"); 
                    // 如果该文件夹中有同名的文件,就先删除掉原文件
                    if (f.exists()) { 
                        f.delete();
                    } 
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    int options = 100;
                    // 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 
                    bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos); 
                    // 循环判断如果压缩后图片是否大于200kb,大于继续压缩 
                    while (baos.toByteArray().length / 1024 > 500) { 
                    // 重置baos即让下一次的写入覆盖之前的内容  baos.reset(); 
                    // 图片质量每次减少5  options -= 5;  
                    // 如果图片质量小于10,则将图片的质量压缩到最小值 
                    if (options < 0) options = 0;  
                    // 将压缩后的图片保存到baos中  b
                    itmap.compress(Bitmap.CompressFormat.JPEG, options, baos); 
                    // 如果图片的质量已降到最低则,不再进行压缩  
                    if (options == 0) break;
                    }
                    // 将压缩后的图片保存的本地上指定路径中  
                    FileOutputStream fos; 
                        try { 
                        fos = new FileOutputStream(new File(SDPATH, picName + ".JPEG")); 
                        fos.write(baos.toByteArray());  
                        fos.flush(); 
                        fos.close(); 
                        } catch (
                        FileNotFoundException e) {
                        e.printStackTrace();
                        } catch (IOException e) { 
                        e.printStackTrace();
                        }
                    } 
                    /**  
                    * 创建文件夹  *
                    * @param dirName  
                    * 文件夹名称  
                    * @return 文件夹路径  
                    * @throws IOException  
                    */  
                    public static File createSDDir(String dirName) throws IOException {
                        File dir = new File(SDPATH + dirName);
                        if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) {
                            System.out.println("createSDDir:" + dir.getAbsolutePath()); 
                            System.out.println("createSDDir:" + dir.mkdir()); 
                            } return dir; 
                    } 
                    /** 
                    * 判断改文件是否是一个标准文件  *
                    * @param fileName  
                    * 判断的文件路径  
                    * @return 判断结果  
                    */  
                    public static boolean isFileExist(String fileName) {
                        File file = new File(SDPATH + fileName); 
                        file.isFile(); 
                        return file.exists(); 
                    } 
                    /** 
                    * 删除指定文件  *
                    * @param fileName  
                    */  
                    public static void delFile(String fileName) { 
                        File file = new File(SDPATH + fileName); 
                        if (file.isFile()) { 
                            file.delete(); 
                            } 
                        file.exists(); 
                    } 
                    /**  
                    * 删除指定文件  
                    * @param file 
                    */  
                    public static void deleteFile(File file) { 
                        if (file.exists()) { 
                        // 判断文件是否存在 
                        if (file.isFile()) { 
                        // 判断是否是文件  
                        file.delete(); 
                        // delete()方法 你应该知道 是删除的意思;
                        } else if (file.isDirectory()) {
                        // 否则如果它是一个目录 
                        File files[] = file.listFiles();
                        // 声明目录下所有的文件 files[]; 
                        for (int i = 0; i < files.length; i++) {
                        // 遍历目录下所有的文件  
                        deleteFile(files[i]); 
                        // 把每个文件 用这个方法进行迭代 
                        } 
                        } 
                        file.delete(); 
                    } else { 
                        Log.i("TAG", "文件不存在!");
                        } 
                    } 
                    /**  
                    * 删除指定文件夹中的所有文件  
                    */  
                    public static void deleteDir() { 
                        File dir = new File(SDPATH);  
                        if (dir == null || !dir.exists() || !dir.isDirectory()) return;  
                            for (File file : dir.listFiles()) {
                            if (file.isFile()) file.delete(); 
                            else if (file.isDirectory()) deleteDir(); 
                        } 
                        dir.delete();  
                    } 
                    /**  
                    * 判断是否存在该文件  *
                    * @param path  * 文件路径  
                    * @return  
                    */  
                    public static boolean fileIsExists(String path) { 
                        try { 
                            File f = new File(path);
                            if (!f.exists()) { 
                                return false; 
                            } 
                        } catch (Exception e) { 
                                return false; 
                            } 
                            return true; 
                        } 
                    }

     

    2.缓存图片的同时把图片路径做一个缓存,为了拉起朋友圈直接带过去多张图片路径

     

     

    public class PosterXQImgCache {
    
        private List<String> imgCache = new ArrayList<>();//用于存放保存后的图片路径
        private static final PosterXQImgCache instance = new PosterXQImgCache();
    
    
        public static PosterXQImgCache getInstance() {
            return instance;
        }
    
        public List<String> getImgCache() {
            return imgCache;
        }
    
        public void setImgCache(String path) {//传入保存后的图片绝对路径
            imgCache.add(path);
        }
    
        public void removeImgCache() {//清空缓存
            imgCache.clear();
        }
    }

    3,一键转发点击事件,直接拿到缓存后的图片路径集合,以Uri数组的形式传入多张图片文件

     

     

    case R.id.one_tranmit://一键转发
        imgCache = PosterXQImgCache.getInstance().getImgCache();
        Uri[] uris = new Uri[imgCache.size()];//创建用于存放图片的Uri数组
        //循环缓存路径分别生成文件,添加到图片Uri数组中
        for (int i = 0; i < imgCache.size(); i++) {
            uris[i] = Uri.fromFile(new File(imgCache.get(i)));
        }
    
        requestCopy(text);//复制文字内容到粘贴板
        //调用转发微信功能类
        shareUtils = new ShareUtils(this, text);
        shareUtils.setUri(uris);
    
        break;
    
     
    /**分享多图到微信或者朋友圈*/
    
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.graphics.drawable.BitmapDrawable;
    import android.net.Uri;
    import android.util.Log;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.PopupWindow;
    import android.widget.Toast;
    
    import com.example.common_lib.R;
    import com.ss.sszb.SszbApp;
    import com.ss.sszb.activity.PersonalInformationActivity;
    import com.ss.sszb.dialog.ChooseShareTypeDialog;
    import com.ss.sszb.dialog.ChooseShareWxImgDialog;
    import com.umeng.socialize.ShareAction;
    import com.umeng.socialize.UMShareAPI;
    import com.umeng.socialize.bean.SHARE_MEDIA;
    import com.umeng.socialize.media.UMImage;
    import com.umeng.socialize.media.UMWeb;
    import com.zd.mvp.common.util.StringUtils;
    
    import java.io.File;
    import java.util.ArrayList;

    /**分享多图到微信或者朋友圈工具类*/

    public class ShareUtils {
    
        /**
         * 微信7.0版本号,兼容处理微信7.0版本分享到朋友圈不支持多图片的问题
         */
        private static final int VERSION_CODE_FOR_WEI_XIN_VER7 = 1380;
        /**
         * 微信包名
         */
        public static final String PACKAGE_NAME_WEI_XIN = "com.tencent.mm";
    
        PopupWindow popupWindow;
        Context context;
        private String path;//单张图片路径
        private String content;
        private Button btn;
        private Uri[] uris;//多张图片路径uri数组
        public ShareUtils(Context context){
            this.context=context;
            //  this.path=path;
          //  this.content=content;
    
            //  this.btn=btn;
    
            showChosePayTypeDialog();
        }
    
        public void setUri(Uri[] uris){
            this.uris = uris;
        }
    
        public void setPath(String path){
            this.path = path;
        }
    
        /**选择分享方式弹窗*/
        ChooseShareWxImgDialog chooseShareTypeDialog;
        public void showChosePayTypeDialog() {
    
            if (chooseShareTypeDialog == null) {
                chooseShareTypeDialog = new ChooseShareWxImgDialog(context);
            }
    
            chooseShareTypeDialog.show();
    
    
            chooseShareTypeDialog.setChoseTypeListener(new ChooseShareWxImgDialog.setChoseTypeListener() {
                @Override
                public void onChoseType(int type) {
                    if (type == 1){//微信
                        if (SszbApp.isWeixinAvilible(context)) {
                            shareWXSomeImg(context,uris);
                        } else {
                            Toast.makeText(context, "请先安装微信", Toast.LENGTH_SHORT).show();
                        }
    
                    } else if (type == 2) {//朋友圈
                        if (SszbApp.isWeixinAvilible(context)) {
                            shareweipyqSomeImg(context,uris);//拉起微信朋友圈带多张图片
                        } else {
                            Toast.makeText(context, "请先安装微信", Toast.LENGTH_SHORT).show();
                        }
                    }
                }
            });
        }
    
    //    private void showpop() {
    //        View view= LayoutInflater.from(context).inflate(
    //                R.layout.share_view, null);
    //        ImageView img_weixin= (ImageView) view.findViewById(R.id.share_weixin);
    //        ImageView img_pyq= (ImageView) view.findViewById(R.id.share_pengyouquan);
    //        popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,
    //                ViewGroup.LayoutParams.WRAP_CONTENT, true);
    //        popupWindow.setBackgroundDrawable(new BitmapDrawable()); // 点击返回按钮popwindow消失
    //
    //        img_weixin.setOnClickListener(new View.OnClickListener() {
    //            @Override
    //            public void onClick(View v) {
    //                if (StringUtils.isWeixinAvilible(context)) {// 判断是否安装微信客户端
    //                    // shareweixin(path);
    //                    shareWXSomeImg(context,uris);
    //                    // login(SHARE_MEDIA.WEIXIN);
    //                } else {
    //                    ActivityUtil.showToast(context, "请安装微信客户端");
    //                }
    //
    //                popupWindow.dismiss();
    //            }
    //        });
    //        img_pyq.setOnClickListener(new View.OnClickListener() {
    //            @Override
    //            public void onClick(View v) {
    //
    //                if (StringUtils.isWeixinAvilible(context)) {// 判断是否安装微信客户端
    //                    //   shareweipyq(path,content);//拉起微信朋友圈带一张图片
    //                    shareweipyqSomeImg(context,uris);//拉起微信朋友圈带多张图片
    //                    // login(SHARE_MEDIA.WEIXIN);
    //                } else {
    //                    ActivityUtil.showToast(context, "请安装微信客户端");
    //                }
    //                popupWindow.dismiss();
    //            }
    //        });
    //
    //        popupWindow.showAtLocation( LayoutInflater.from(context).inflate(
    //                R.layout.activity_posterxq, null).findViewById(R.id.img_share), Gravity.BOTTOM, 0, 0);// 先设置popwindow的所有参数,最后再show
    //
    //    }
    
        /**
         * 拉起微信好友发送单张图片
         * */
        private void shareweixin(String path){
            Uri uriToImage = Uri.fromFile(new File(path));
            Intent shareIntent = new Intent();
            //发送图片到朋友圈
            //ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
            //发送图片给好友。
            ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
            shareIntent.setComponent(comp);
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
            shareIntent.setType("image/jpeg");
            context.startActivity(Intent.createChooser(shareIntent, "分享图片"));
        }
        /**
         * 拉起微信朋友圈发送单张图片
         * */
        private void shareweipyq(String path,String content){
            Uri uriToImage = Uri.fromFile(new File(path));
            Intent shareIntent = new Intent();
            //发送图片到朋友圈
            ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
            //发送图片给好友。
    //        ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
            shareIntent.setComponent(comp);
            shareIntent.putExtra("Kdescription", content);
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
            shareIntent.setType("image/jpeg");
            context.startActivity(Intent.createChooser(shareIntent, "分享图片"));
        }
    
        /**
         * 拉起微信朋友圈发送多张图片
         * */
        private void shareweipyqSomeImg(Context context,Uri[] uri){
            Intent shareIntent = new Intent();
            //1调用系统分享
           // shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
            shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    
            //2添加图片数组
            ArrayList<Uri> imageUris = new ArrayList<>();
            for (int i = 0; i < uri.length; i++) {
                imageUris.add(uri[i]);
                Log.e("shareIntent",uri[i]+"路径");
            }
    
            if (getVersionCode(context,PACKAGE_NAME_WEI_XIN) < VERSION_CODE_FOR_WEI_XIN_VER7) {
                // 微信7.0以下版本
                shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
                shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);
            } else {
                // 微信7.0及以上版本,朋友圈只支持单张图片分享
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.putExtra(Intent.EXTRA_STREAM,uri[0]);
            }
    
            shareIntent.setType("image/*");
    
            //3指定选择微信
            ComponentName componentName = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareToTimeLineUI");
            shareIntent.setComponent(componentName);
    
            //4开始分享
            context.startActivity(Intent.createChooser(shareIntent,"分享图片"));
        }
    
        /**
         * 拉起微信发送多张图片给好友
         * */
        private void shareWXSomeImg(Context context,Uri[] uri){
            Intent shareIntent = new Intent();
            //1调用系统分析
            shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
            shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    
            //2添加图片数组
            ArrayList<Uri> imageUris = new ArrayList<>();
            for (int i = 0; i < uri.length; i++) {
                imageUris.add(uri[i]);
            }
    
            shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);
            shareIntent.setType("image/*");
    
            //3指定选择微信
            ComponentName componentName = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI");
            shareIntent.setComponent(componentName);
    
            //4开始分享
            context.startActivity(Intent.createChooser(shareIntent,"分享图片"));
        }
    
        /**
         * 获取制定包名应用的版本的versionCode
         * @param context
         * @param
         * @return
         */
        public static int getVersionCode(Context context,String packageName) {
            try {
                PackageManager manager = context.getPackageManager();
                PackageInfo info = manager.getPackageInfo(packageName, 0);
                int version = info.versionCode;
                return version;
            } catch (Exception e) {
                e.printStackTrace();
                return 0;
            }
        }
    
    }

    //弹窗dialog代码

    package com.ss.sszb.dialog;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.util.DisplayMetrics;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    
    import com.ss.sszb.R;
    
    /**
     * @autor: zf
     * @Description: 选择分享多张图片到微信-朋友圈方式
     * @Date: 2019/1/23 12:18
     */
    public class ChooseShareWxImgDialog extends Dialog implements View.OnClickListener {
    
        private Context context;
        private TextView tvCancelshare;
        private RelativeLayout rl_sharewx,rl_shareqq,rl_sharewb,rl_sharepyq,rl_shareqqzone;
    
        private setChoseTypeListener choseTypeListener;
    
        public ChooseShareWxImgDialog(@NonNull Context activity) {
            super(activity, R.style.CustomDialog_Translucent);
            this.context = activity;
            setCanceledOnTouchOutside(true); // 点击空白区域可以Dismiss对话框
            setCancelable(true); // 点击返回按键可以Dismiss对话框
            init();
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
    
            init();
        }
    
        public void init() {
            LayoutInflater inflater = LayoutInflater.from(context);
            View view = inflater.inflate(R.layout.dialog_sharewx_someimg, null);
            setContentView(view);
    
            tvCancelshare = findViewById(R.id.tvCancelshare);
            rl_sharewx = findViewById(R.id.rl_sharewx);
            rl_sharepyq = findViewById(R.id.rl_sharepyq);
    
            tvCancelshare.setOnClickListener(this);
            rl_sharewx.setOnClickListener(this);
            rl_sharepyq.setOnClickListener(this);
    
            Window dialogWindow = getWindow();
            WindowManager.LayoutParams lp = dialogWindow.getAttributes();
            dialogWindow.setGravity(Gravity.BOTTOM);
            DisplayMetrics d = context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用
            lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 高度设置为屏幕的0.6
            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
            dialogWindow.setAttributes(lp);
    
        }
    
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.rl_sharewx:
                    choseTypeListener.onChoseType(1);
                    break;
                case R.id.rl_sharepyq:
                    choseTypeListener.onChoseType(2);
                    break;
                case R.id.tvCancelshare:
                    this.dismiss();
                    break;
                default:
                    this.dismiss();
                    break;
    
            }
            this.dismiss();
        }
        public void setChoseTypeListener(setChoseTypeListener listener){
                this.choseTypeListener = listener;
        }
    
        public interface setChoseTypeListener {
            void onChoseType(int type);
        }
    }
    

    //样式

    <style name="CustomDialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@color/colorTransparent</item>
        <item name="android:windowIsTranslucent">false</item><!--半透明-->
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">false</item><!--模糊-->
    </style>
    
    <style name="CustomDialog_Translucent" parent="CustomDialog">
        <item name="android:windowIsTranslucent">true</item><!--半透明-->
        <item name="android:backgroundDimEnabled">true</item><!--模糊-->
    </style>

    //dialog布局文件自己定义


    4,每次新的页面打开,请求数据回来记得情况把缓存清空,每次只保存新的

     

     

    PosterXQImgCache.getInstance().removeImgCache();//先清空路径缓存
    ImgFileUtils.deleteDir();//删除本地缓存的图片
    //缓存图片到本地
    for (int i = 0; i < images.size(); i++) {
        Glide.with(this)
                .load(images.get(i).getPic_url()).asBitmap().into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                ImgFileUtils.saveBitmap(PosterXQActivity.this, resource, StringUtils.setDateTime());
            }
        });
    }

    这样就实现一键转发图片或者文字到微信或者朋友圈的功能,每一个问题的解决都将让你前进一步,加油!

     

    展开全文
  • 1、我们打开手机云便签后,点击需要将图片转发到...5、接着就会自动跳转到发送朋友圈页面,并且默认添加了本条图片,我们还可以输入简单的文字提示内容,并点击发表按钮,就可以成功将本张图片一键转发朋友圈。 ...
  • java基础教程之实现一键分享朋友圈

    千次阅读 2019-05-15 11:50:26
    java最新技术,实现一键分享朋友圈,下面给大家演示一下 作为十余年java老司机,根据多年经验,自己录制的学习视频,我往对你们有所帮助, 有技术问题或者面试方面交流的可以加我微信renlliang2013,随时欢迎。 ...
  • 微信小视屏一键转发

    2016-01-30 20:24:46
    ios无需越狱 朋友圈小视屏一键转发 使用PP助手直接导入即可使用 我只是个搬运工而已 具体的自己再研究
  • 微信一键转发需越狱

    2018-09-29 17:25:07
    可自试试,多开微信可以一键转发,苹果系统需要越狱,可以通过爱思助手什么的安装
  • 1.我们首先打开朋友圈转发截图生成工具网站:http://tool.tianles.com/pyq/ 2.输入自己的微信昵称,上传头像,撰写文本等等,自定义设置完成之后点击生成即可获得你想要的朋友圈截图。 3.点击保存即可完成全部流程...
  • 一键转发工具share.js

    2019-05-06 16:32:46
    Share.js是一款一键转发工具,它可以一键分享到微博、QQ空间、QQ好友、微信、腾讯微博、豆瓣、Facebook、Twitter、Linkedin、Google+、点点等社交网站,使用字体图标。 安装 有3种安装方式: 使用npm ...
  • 可以实现微信小视屏转发朋友圈的功能,原理来源于网络。录制一段小视屏,然后用其它小视屏替换掉,再确认发送。 源码里有详细的备注,每一步操作是什么意义,细看都能看懂。 另:我想说的重点,模拟触摸是不需要...
  • 可以实现微信小视屏转发朋友圈的功能,原理来源于网络。录制一段小视屏,然后用其它小视屏替换掉,再确认发送。 源码里有详细的备注,每一步操作是什么意义,细看都能看懂。 目录说明: main_.e - 你懂的,你...
  • 微信一键语音转发一键朋友圈转发,防封,免费微商微信,免费多开微信
  • 朋友圈转发

    2018-07-18 10:44:08
    简道.朋友圈转发器,让转发变得简单 1:一键转发(好友及自己的)相册到自友圈 2:存档并管理已转发的相册,可以实现相册一次编辑多次发布
  • 所以,今天就来教大家一下如何转发别人发的朋友圈里的内容。(我妈就曾经问过我如何转发别人朋友圈里的投票内容)1.转发文字+图片如果就在自己的朋友圈内找到需要转发的内容,只需:长按文字选择【复制】——点开图片...
  • 微商抓图神器

    2018-06-22 15:07:16
    添加任意网页打开,点击抓取即可一键抓取该网页的所有图文,用户可以手动选择自己想要的9张图片一键转发朋友圈! 一键转发淘宝、京东、QQ空间、微博、又拍相册、自己手机网站等大部分的手机网站的图文(九宫图+文字...
  • 微信小程序转发朋友圈

    千次阅读 2019-06-06 15:32:54
    微信小程序转发朋友圈 接触过微信小程序的都应该知道微信小程序只开辟了一个转发给好友和群的api,如果想发送到朋友圈,方法大同小异,无非就是保存图片到本机 然后在进行朋友圈发表,话不多说,直接上代码。 1.首先...
  • 从公众号,点击菜单进入一个web网站,网站某个页面加了个【分享】按钮,如何点击分享按钮,出发微信的分享功能!
  • 关于发动态,微信不像qq那样提供了一键转发功能。微信朋友圈如果不是发布的内容链接,是没有转发功能的。如果你对好友朋友圈发的图片或文字很感兴趣,想转发怎么办呢?接下来我们就一起来看一看微信朋友圈怎么实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,507
精华内容 602
关键字:

一键转发朋友圈