美文网首页
Android通过Intent分享文件到外部应用时找不到资源

Android通过Intent分享文件到外部应用时找不到资源

作者: 南宫知晓 | 来源:发表于2019-10-25 14:51 被阅读0次

    今天在做一个通过Intent把文件分享到微信的功能,遇到微信一直返回“获取资源失败”的问题。
    代码如下:

    Intent intent = new Intent();
    //设置intent的Action属性
    intent.setAction(Intent.ACTION_SEND);
    // 授权读权限
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
     //设置intent的data和Type属性。
    intent.setDataAndType(uri, type);
    activity.startActivity(intent);
    

    原因有几个
    1.你需要获取都存储权限
    2.你需要通过 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 授权外部应用临时权限
    3.你需要加上这一句

    intent.putExtra(Intent.EXTRA_STREAM, uri); // 必须添加这一句,否则找不到资源
    

    后来在注释中发现这么一句话,大概意思是为了兼容旧应用你需要使用 ACTION_SEND 必须加上 EXTRA_TEXT 或者 EXTRA_STREAM 这两个FLAG

         * As of {@link android.os.Build.VERSION_CODES#JELLY_BEAN}, the data
         * being sent can be supplied through {@link #setClipData(ClipData)}.  This
         * allows you to use {@link #FLAG_GRANT_READ_URI_PERMISSION} when sharing
         * content: URIs and other advanced features of {@link ClipData}.  If
         * using this approach, you still must supply the same data through the
         * {@link #EXTRA_TEXT} or {@link #EXTRA_STREAM} fields described below
         * for compatibility with old applications.  If you don't set a ClipData,
         * it will be copied there for you when calling {@link Context#startActivity(Intent)}.
    

    在这卡了好久,记录一下吧

    相关文章

      网友评论

          本文标题:Android通过Intent分享文件到外部应用时找不到资源

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