因公司需求,需要多图片+文字转发分享功能,因为第三方分享,比如友盟shareSDK,只能分享单张图片,所以只能用系统分享功能。还有填坑过程,供大家参考,也为自己做笔记。
直接上代码:
/**
*
* @param type 0微信朋友 分享,1微信朋友圈,2 QQ好友分享 , 3 qq空间分享 ,4新浪分享
* @param fileList 文件list,注意(是本地文件,网络图片需要上网下载到本地保存了才能分享)
* @param context
*/
public static void startShare(int type,String content, List<File> fileList, Context context) {
String mPackageName = "";
String mActivityName = "";
String uninstallTips = "";
switch (type){
case 0: //微信
mPackageName = "com.tencent.mm";
mActivityName = "com.tencent.mm.ui.tools.ShareImgUI";
uninstallTips = context.getResources().getString(R.string.wx_uninstallSoftware);
break;
case 1: //微信朋友圈
mPackageName = "com.tencent.mm";
mActivityName = "com.tencent.mm.ui.tools.ShareToTimeLineUI";
uninstallTips = context.getResources().getString(R.string.wx_uninstallSoftware);
break;
case 2: //qq好友分享
mPackageName = "com.tencent.mobileqq";
mActivityName = "com.tencent.mobileqq.activity.JumpActivity";
uninstallTips = context.getResources().getString(R.string.qq_uninstallSoftware);
break;
case 3: //QQ空间,貌似我找不到qq空间的分享,所以暂时不支持
uninstallTips = "暂时不支持";
break;
case 4: //新浪分享
mPackageName = "com.sina.weibo";
mActivityName = "com.sina.weibo.EditActivity";
uninstallTips = context.getResources().getString(R.string.sina_uninstallSoftware);
break;
}
if (!uninstallSoftware(context, mPackageName)) {
Toast.makeText(context,uninstallTips, Toast.LENGTH_SHORT).show();
return;
}
ArrayList<Uri> uriList = new ArrayList<>();
for (File file : fileList){
uriList.add(Uri.fromFile(file));
}
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
if (type == 4){ //如果是新浪微博就不用设置activity接收(重点,因为部分微博客户端是不需要设置的,否则会显示无法打开微博客户端)
shareIntent.setPackage(mPackageName);
}else {
shareIntent.setClassName(mPackageName, mActivityName);
}
shareIntent.putExtra(Intent.EXTRA_TEXT, content);
shareIntent.putExtra("Kdescription", content); //设置该属性就能设置分享文本内容
//shareIntent.putExtra(Intent.EXTRA_STREAM, uriList.get(0)); //单张图片分享
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList); //多张图片
shareIntent.setType("image/*");
context.startActivity(Intent.createChooser(shareIntent, "Share images to.."));
}
/**
* 检测客户端有木有安装
* @param context
* @param packageName
* @return
*/
private static boolean uninstallSoftware(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
try {
PackageInfo packageInfo = packageManager.getPackageInfo(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
if (packageInfo != null) {
return true;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return false;
}