美文网首页安卓开发
通过intent和无障碍服务实现分享图片+文字到微信朋友圈

通过intent和无障碍服务实现分享图片+文字到微信朋友圈

作者: ysnows | 来源:发表于2017-07-04 11:43 被阅读2938次

    故事背景

    在全民微商的大时代背景下,发圈是一个很重要的环节,基于这个需求,便出现了此篇文章

    系统参数

    硬件:小米手机6 MIUI9 安卓7.1.1
    软件:微信6.6.7

    预览

    废话不多说,没图说个**

    1533803880468975.gif

    步骤

    一、代码文件 WeiXinShareUtil

    import android.content.ComponentName;  
    import android.content.Context;  
    import android.content.Intent;  
    import android.content.pm.PackageInfo;  
    import android.content.pm.PackageManager;  
    import android.net.Uri;  
    import android.widget.Toast;  
      
    import java.io.File;  
      
    /** 
     * Created by Administrator on 2015/6/24. 
     */  
    public class WeiXinShareUtil {  
        public static void sharePhotoToWX(Context context, String text, String photoPath) {  
            if (!uninstallSoftware(context, "com.tencent.mm")) {  
                Toast.makeText(context, "微信没有安装!", Toast.LENGTH_SHORT).show();  
                return;  
            }  
      
            File file = new File(photoPath);  
            if (!file.exists()) {  
                String tip = "文件不存在";  
                Toast.makeText(context, tip + " path = " + photoPath, Toast.LENGTH_LONG).show();  
                return;  
            }  
      
            Intent intent = new Intent();  
            ComponentName componentName = new ComponentName("com.tencent.mm",  
                    "com.tencent.mm.ui.tools.ShareToTimeLineUI");  
            intent.setComponent(componentName);  
            intent.setAction("android.intent.action.SEND");  
            intent.setType("image/*");  
            intent.putExtra("Kdescription", text);  
            intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));  
            context.startActivity(intent);  
        }  
      
        private static boolean uninstallSoftware(Context context, String packageName) {  
            PackageManager packageManager = context.getPackageManager();  
            try {  
                PackageInfo packageInfo = packageManager.getPackageInfo(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);  
                if (packageInfo != null) {  
                    return true;  
                }  
            } catch (PackageManager.NameNotFoundException e) {  
                e.printStackTrace();  
            }  
            return false;  
        }  
    }  
    

    二、调用方式
    WeiXinShareUtil.sharePhotoToWX(context, "test", photoPath);
    第一个参数:上下文Context
    第二次参数:你要分享的文字text
    第三个参数:你要分享的图片路径photoPath

    参考文章

    关于7.0分享多图出现的问题,可以参考这篇文章:使用原生intent分享图片获取资源失败问题

    三、 补充说明:
    安卓微信6.6.7之后,微信对'Kdescription'做了处理,所有文字带不过去了。


    image.png

    四、微信 6.6.7不能传送文字的问题的解决方案
    可以通过安卓的辅助服务功能,实现自动复制。就是监测微信发送朋友圈的页面->通过辅助服务把文字写入到Edittext。具体的代码已经放到下边的github仓库里了。

    Github开源地址

    1. wxshareapp

    先睹为快

    1. apk下载地址:github
    欢迎关注我的个人公众号(捯饬捯饬啥)
    daochidaochisha

    相关文章

      网友评论

      • MarioAndroid:微信 6.6.7不能传送文字的问题的解决方案 没有把代码完整的实现起来吗?
        ysnows:@爱兔悠 有啊,在github上,下边有链接啊
      • bf7cce6a8ff0:@不二_2bbb 我看到过微商相册通过无障碍设置开关可以分享文字,不知道怎么实现的
        ysnows:@小绒哥绒传奇 嗯,是个思路
      • 卖车管家:Kdescription无效怎么解决?这里 https://www.jianshu.com/p/57935d90bf75 也没有方案
      • feff72c0bd8c:关机重启后问题没法发送过去,不知道是否有遇到这样的 intent.putExtra("Kdescription", text); 不起作用重启后
        ysnows:@吴迪_5318 处理不了了,微信根据时间戳随机分配的字符串
        吴迪_5318:@ysnows 这个怎么处理呢
        ysnows:安卓微信6.6.7之后,微信对'Kdescription'做了处理,所有文字带不过去了。

      本文标题:通过intent和无障碍服务实现分享图片+文字到微信朋友圈

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