关于android调用系统的分享,选择微信多文件分享失败提示分享失败,多文件分享仅支持照片格式的解决

在找了很多解决方案,后面结合起来才解决,不多说直接看代码:

最后的那个回调无用可以不加,重点来了:

需要在application上添加以上代码,是不是很神奇,这样子就解决调用系统分享qq可分享微信不可分享的问题了。

 

补充下微信直接分享多张图片的方法,微信单张分享可以走微信分享,多张则不支持,这里是走手机自带分享到微信好友的

public static void shareWechatFriend(Context mContext, List<String> paths, String authority) {
    if (AppUtil.isAppInstalled(mContext, "com.tencent.mm")) {
        Intent intent = new Intent();

        Uri uri = null;
        ArrayList<Uri> uriList = new ArrayList<>();
        for (String path : paths) {
            //这部分代码主要功能是判断了下文件是否存在,在android版本高过7.0(包括7.0版本)
            // 当前APP是不能直接向外部应用提供file开头的的文件路径,需要通过FileProvider转换一下。否则在7.0及以上版本手机将直接crash。
            try {
                ApplicationInfo applicationInfo = mContext.getApplicationInfo();
                int targetSDK = applicationInfo.targetSdkVersion;
                if (targetSDK >= Build.VERSION_CODES.N && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    uri = Uri.parse(MediaStore.Images.Media.insertImage(mContext.getContentResolver(), new File(path).getAbsolutePath(), new File(path).getName()+TimeUtil.getCurMilliSecondTimeStamp(), null));
                    uriList.add(uri);
                } else {
                    uri = Uri.fromFile(new File(path));
                    uriList.add(uri);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            ComponentName cop = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
            intent.setComponent(cop);
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_SEND_MULTIPLE);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
            mContext.startActivity(Intent.createChooser(intent, "Share"));

    } else {
        Toast.makeText(mContext, "您需要安装微信客户端", Toast.LENGTH_LONG).show();
    }
}

TimeUtil.getCurMilliSecondTimeStamp()是获取当前的时间,精确到毫秒,因为本地存储的同名文件就会在尾巴加(1),一直到(32),超过就会报错,添加为了防止这个问题

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值