近期在做一个支持图文混排的便签应用,分享的时候遇到了问题.要么只能分享文字,要么就只能分享图片.
分享这个东西不仅依靠于你写的代码,还依靠于其他应用实现接收的方式.我们能够实现的效果不仅取决我们,还取决于其他应用.
所以我们只能尽量的提供充分的内容,让其他应用能够在需要时读取.
我们可以按照以下逻辑编写分享图文的代码
public Intent createIntent(){
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SUBJECT, "分享的标题");//一般用于邮件
intent.putExtra(Intent.EXTRA_TEXT, toPlainText());
if(!hasImage()){//如果没有图片则设置类型为text/plain
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
}else{
//获取要分享的Image的Uri数字
ArrayList<Uri> imageUris = getImageUris();
//只要有图片就设置type为image/*
intent.setType("image/*");
if(imageUris.size() == 1){
//一张图片用ACTION_SEND
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, imageUris.get(0));
}else{
//多张图片用ACTION_SEND_MUTIPLE
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);
}
}
return Intent.createChooser(intent, "提示分享的字符串");
}
这样可以最大化的分享我们的图文数据,至于其他应用是否能够读取,那就取决于该应用读取Intent的逻辑了.
当然 ,还可以使用 类似友盟的社会化分享sdk,但这就不在本文讨论范围内了.