安卓微信7.0.0,APP图片分享问题
发布于 7 年前 作者 juandeng 1887 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

使用fileprovider适配7.0以上将file:开头uri转换为content:开头的uri。多图分享调用系统分享接口,选择微信-发送给朋友,toast提示“分享失败,多文件分享仅支持照片格式”。

在微信开放社区找到https://developers.weixin.qq.com/community/develop/doc/000a024da986c0fc9be7a020651800

按照上面链接中解决方案引入 StrictMode后不用适配7.0以上系统发现可以正常运行,但是谷歌官方不建议在release正式版本中使用StrictMode,有更好的解决方案吗,上述方案会有隐患吗

  • 预期表现

可以成功跳转到分享选择好友分享图片的界面

  • 复现路径
  • 提供一个最简复现 Demo

7.0以上安卓设备会出现上述问题

    /**

     * 分享图片(触发场景多个图片)

     */

    public void shareImages(Context context,ArrayList<String> imageUris_IN) {

        Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);

        intent.setType(“image/*”);//设置mime格式为图片

        //目前尝试使用uri有效,直接传文件路径会出现获取资源失败

        //路径转换为uri

        ArrayList<Uri> imageUris = new ArrayList<Uri>();

        //安卓7.0以需要使用fileprovider获取uri

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

            //路径转换为uri

            for(int i=0; i<imageUris_IN.size(); i++)

            {

                imageUris.add(FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID+".fileprovider",new File(imageUri_IN.get(i)));

            }

        }else{

            //路径转换为uri

            for(int i=0; i<imageUris_IN.size(); i++)

            {

                imageUris.add(Uri.parse(“file://” + imageUris_IN.get(i)));

            }

        }

        intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);

        intent.setType(“image/*”);//设置mime格式为图片

        startActivityForResult(Intent.createChooser(intent, “选择应用”), 1001);;

        context.startActivity(Intent.createChooser(intent, null));

    }

回到顶部