NOTE:这只是简单的实现,没有使用各自的SDK。基本思路是通过包名和类名来直接操作的。如果app修改了名字,可能就需要对应的修改报名和类名。
主要目的是对多张图片的分享做一次探索。
首先,需要一个检查APP是否安装的类 AppInstallHelper:
package com.util.share; import java.util.List; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; public class AppInstallHelper { //这些都是分享时,对应的包名和类名。怎么获取到的?嘿嘿。。 // 微信好友 // package = com.tencent.mm, // activity = com.tencent.mm.ui.tools.ShareImgUI // 微信朋友圈 // package = com.tencent.mm, // activity = com.tencent.mm.ui.tools.ShareToTimeLineUI // // package = com.tencent.mobileqq, // activity = com.tencent.mobileqq.activity.JumpActivity // package = com.tencent.mobileqq, // activity = com.tencent.mobileqq.activity.qfileJumpActivity // QQ空间 // package = com.qzone, activity = // com.qzone.ui.operation.QZonePublishMoodActivity // 人人 // package = com.renren.mobile.android, // activity = com.renren.mobile.android.publisher.UploadPhotoEffect // 陌陌 // package = com.immomo.momo, activity = // com.immomo.momo.android.activity.feed.SharePublishFeedActivity // 新浪微博 // package = com.sina.weibo, activity = com.sina.weibo.EditActivity // 腾讯微博 // package = com.tencent.WBlog, activity = // com.tencent.WBlog.intentproxy.TencentWeiboIntent //packageName = im.yixin, name = im.yixin.activity.share.ShareToSnsActivity //packageName = im.yixin, name = im.yixin.activity.share.ShareToSessionActivity //packageName = com.alibaba.android.babylon, name = com.alibaba.android.babylon.biz.im.activity.RecentIMListActivity //packageName = com.alibaba.android.babylon, name = com.alibaba.android.babylon.biz.home.activity.CreateFeedActivity public static boolean isInstalled(Context context, String packageName, String activityName) { Intent intent = new Intent(); intent.setClassName(packageName, activityName); List<ResolveInfo> list = context.getPackageManager() .queryIntentActivities(intent, 0); if (list.size() > 0) { return true; } return false; } }
接下来就是对应的分享代码了,挨个儿来吧:
public class ShareToLwFriend { //来往好友 private static final String PackageName = "com.alibaba.android.babylon"; private static final String ActivityName = "com.alibaba.android.babylon.biz.im.activity.RecentIMListActivity"; //pics are OK。 text is not.... public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { ShareUtil shareUtil = new ShareUtil(activity, images); Intent baseIntent = shareUtil.getBaseIntent(ActivityName); // baseIntent.putExtra("summary", msg); // baseIntent.putExtra(Intent.EXTRA_TITLE, msg); baseIntent.putExtra(Intent.EXTRA_TEXT, msg); // baseIntent.putExtra(Intent.EXTRA_SUBJECT, msg); activity.startActivity(baseIntent); } else { Toast.makeText(activity, "您还没有安装来往!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToLwZone { //来往状态 private static final String PackageName = "com.alibaba.android.babylon"; private static final String ActivityName = "com.alibaba.android.babylon.biz.home.activity.CreateFeedActivity"; //pics are OK。 text is not.... public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { ShareUtil shareUtil = new ShareUtil(activity, images); Intent baseIntent = shareUtil.getBaseIntent(ActivityName); // baseIntent.putExtra("summary", msg); // baseIntent.putExtra(Intent.EXTRA_TITLE, msg); // baseIntent.putExtra(Intent.EXTRA_TEXT, msg); baseIntent.putExtra(Intent.EXTRA_SUBJECT, msg); activity.startActivity(baseIntent); } else { Toast.makeText(activity, "您还没有安装来往!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToMomo { private static final String PackageName = "com.immomo.momo"; private static final String ActivityName = "com.immomo.momo.android.activity.feed.SharePublishFeedActivity"; //不能分享多张图片 public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TITLE, msg); intent.setType("text/*"); intent.putExtra(Intent.EXTRA_STREAM, images.get(0)); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装陌陌!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToQQFriend { private static final String PackageName = "com.tencent.mobileqq"; private static final String ActivityName = "com.tencent.mobileqq.activity.JumpActivity"; //pics are OK。 text is not.... public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { ShareUtil shareUtil = new ShareUtil(activity, images); Intent baseIntent = shareUtil.getBaseIntent(ActivityName); baseIntent.putExtra("summary", msg); activity.startActivity(baseIntent); } else { Toast.makeText(activity, "您还没有安装QQ!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToQQZone { private static final String PackageName = "com.qzone"; private static final String ActivityName = "com.qzone.ui.operation.QZonePublishMoodActivity"; public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND_MULTIPLE); intent.putExtra(Intent.EXTRA_TEXT, msg); intent.setType("image/jpeg"); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, images); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装QQ空间!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToRenren { private static final String PackageName = "com.renren.mobile.android"; private static final String ActivityName = "com.renren.mobile.android.publisher.UploadPhotoEffect"; //OK public static void shareText(Activity activity, String msg) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, msg); intent.setType("text/*"); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装人人!", Toast.LENGTH_SHORT).show(); } } //NG public static void shareImgs(Activity activity,/*String msg,*/ ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND_MULTIPLE); // intent.putExtra(Intent.EXTRA_TEXT, msg); intent.setType("image/*"); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, images); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装人人!", Toast.LENGTH_SHORT).show(); } } public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { ArrayList<Uri> oneImg = new ArrayList<Uri>(); oneImg.add(images.get(0)); ShareUtil shareUtil = new ShareUtil(activity, oneImg); Intent intent = shareUtil.getBaseIntent(ActivityName); intent.putExtra(Intent.EXTRA_TEXT, msg); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装人人!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToTecentWeibo { private static final String PackageName = "com.tencent.WBlog"; private static final String ActivityName = "com.tencent.WBlog.intentproxy.TencentWeiboIntent"; public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, msg); intent.setType("image/jpeg"); intent.putExtra(Intent.EXTRA_STREAM, images.get(0)); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装腾讯微博!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToWeixinFriend { private static final String PackageName = "com.tencent.mm"; private static final String ActivityName = "com.tencent.mm.ui.tools.ShareImgUI"; public static void shareImgs(Activity activity, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND_MULTIPLE); intent.setType("image/*"); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, images); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装微信!", Toast.LENGTH_SHORT).show(); } } public static void shareText(Activity activity,String msg) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, msg); intent.setType("text/*"); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装微信!", Toast.LENGTH_SHORT).show(); } } }
public class ShareToWeixinZone { private static final String PackageName = "com.tencent.mm"; private static final String ActivityName = "com.tencent.mm.ui.tools.ShareToTimeLineUI"; public static void share(Activity activity,String msg, ArrayList<Uri> images) { if (AppInstallHelper.isInstalled(activity, PackageName, ActivityName)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND_MULTIPLE); intent.putExtra("Kdescription", msg); intent.setType("image/*"); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, images); intent.setClassName(PackageName, ActivityName); activity.startActivity(intent); } else { Toast.makeText(activity, "您还没有安装微信!", Toast.LENGTH_SHORT).show(); } } }
还有一些,见下一篇。