美文网首页
android下分享多图到微信或使用系统分享遇到的问题

android下分享多图到微信或使用系统分享遇到的问题

作者: 王家薪 | 来源:发表于2019-07-21 16:17 被阅读0次
    一定要注意 uri 的格式

    content://media/external/images/media/581138 这是正确的本地路径格式
    file:///content%3A/media/external/images/media/581139 不正确的本地路径格式
    如果地址错误 就不会调起微信

    /**
     *
     * @param 保存后的本地图片路径
     */
    public void launchSystemShare(ArrayList<String> imagePaths, Promise p) {
            ArrayList<Uri> uriList = new ArrayList<>();
            //array为要分享图片的本地地址
            for (int i = 0; i <imagePaths.size() ; i++) {
                //将所有的本地地址转换为Uri并添加至集合
                uriList.add(Uri.parse(imagePaths.getString(i)));
                //下面这种方式 我得到了错误的本地路径 导致一直无法调起微信
                Log.e("11111",Uri.fromFile(new File(imagePaths.getString(i))).toString());
               
            }
            Intent shareIntent = new Intent();
    // 如果打开这行代码注释 分享时直接调起微信列表 否则调起系统分享页面
    //        shareIntent.setComponent(new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI"));
            //打开分享界面的Action
            shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
            //指定分享的类型
            shareIntent.setType("image/*");
            //分享传递的数据
            shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
            //打开分享
            getCurrentActivity().startActivity(shareIntent);
        }
    

    如果是 android7.0 以上 需要在 MainApplication 的 onCreate 方法中添加以下代码

       if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.N) {
          StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
          StrictMode.setVmPolicy(builder.build());
          builder.detectFileUriExposure();
        }
    

    相关文章

      网友评论

          本文标题:android下分享多图到微信或使用系统分享遇到的问题

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