先说结论:
分享图片时,正面的方式是这样:
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) }
网友评论