可以根据自己的需求过滤选择自己需要分享的平台
public class ShareUtils {
public static void share(Context context, String title, String msg) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
// 查询所有可以分享的Activity
List<ResolveInfo> resInfo = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resInfo.size() > 0){
//将使用到的分享的应用放入一个集合中
List<Intent> targetedShareIntents = new ArrayList<Intent>();
//遍历所有可分享应用,筛选出你想要的应用
for (ResolveInfo info : resInfo){
Intent targeted = new Intent(Intent.ACTION_SEND);
targeted.setType("text/plain");
ActivityInfo activityInfo = info.activityInfo;
Log.v("logcat", "packageName=" + activityInfo.packageName + "Name=" + activityInfo.name);
// 分享出去的内容
targeted.putExtra(Intent.EXTRA_TEXT, msg);
// 分享出去的标题
targeted.putExtra(Intent.EXTRA_SUBJECT, title + "sharing from QuickGame");
targeted.setPackage(activityInfo.packageName);
targeted.setClassName(activityInfo.packageName, info.activityInfo.name);
PackageManager pm = context.getApplicationContext().getPackageManager();
// 我们的APP只让分享到Facebook、Twitter、Google+,Messenger 。所以需要将扫描出来的可分享应用进行筛选。
//筛选方法:不同的可用于分享的app有不同的application信息,可根据那些信息进行筛选应用。
//由于微信分享有分享给好友,分享到微信搜藏,所以需要区分,区分方法是判断loadLabel,二者的loadLabel不同。
if (info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("Facebook") ||
info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("Twitter")||
info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("Google+") &&
info.loadLabel(pm).toString().contains("Google+") ||
info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("Messenger")&&
info.loadLabel(pm).toString().contains("Messenger")){
targetedShareIntents.add(targeted);
}
}
// 选择分享时的标题
if (targetedShareIntents.size() > 0){
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), ""); // 弹出框标题
if (chooserIntent == null) {
return;
}
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
try {
context.startActivity(chooserIntent);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(context, "Fail to find app component", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(context, "Fail to find app component", Toast.LENGTH_SHORT).show();
}
} }
}