海外篇-Google原生分享

452 阅读1分钟

可以根据自己的需求过滤选择自己需要分享的平台

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();
            }
        }    }
}