收藏
回答

安卓微信7.0.0,APP图片分享问题

问题模块 框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
客户端 小程序 Bug Android Android 7.1 Android 9.0 魅族Pro6s 小米 8 7.0.3

- 当前 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));

    }


最后一次编辑于  03-22  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答