美文网首页
关于Intent.ACTION_SEND分享图片踩过的那些坑

关于Intent.ACTION_SEND分享图片踩过的那些坑

作者: 李艺为 | 来源:发表于2018-11-09 22:19 被阅读0次

先说结论:

分享图片时,正面的方式是这样:

uri用FileProvider提供的就行了,官方也是推荐这么做的

1.

intent.setDataAndType(uri,"image/gif");//这种方式微信无法接收,会提示“获取资源失败”

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

2.

intent.putExtra(Intent.EXTRA_STREAM,uri);

intent.setType("image/gif");

另外,QQ好像不支持这种类型的分享uri

content://com.aoemo.giphydemo/my_image/082c7e892b8abd0231978675d3a84118da4e1cffa4d61b34e0c7c40b38d06468.0

只支持这种类型的分享uri

file:///storage/emulated/0/082c7e892b8abd0231978675d3a84118da4e1cffa4d61b34e0c7c40b38d06468.0

探索过程:

Uri uri = FileProvider.getUriForFile(mContext,AUTHORITY,file);

1.

intent.setType("image/gif");

intent.setData(uri);

结果:无法显示图片

2.

intent.setData(uri);

intent.setType("image/gif");

结果:也无法显示图片

3.

intent.setDataAndType(uri,"image/gif");

android 6.0等高版本要加上这个权限,不然也没法显示

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

结果:可以显示图片

4.

intent.putExtra(Intent.EXTRA_STREAM,uri);

intent.setType("image/gif");

结果:可以显示图片

这里如果不加setType可能会出现:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND flg=0x1 (has clip) (has extras) }

相关文章

网友评论

      本文标题:关于Intent.ACTION_SEND分享图片踩过的那些坑

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