最近APP要接入分享图片和视频功能,主流就是微博微信QQ,需要去开放平台注册APP,集成SDK,非常麻烦。
突然发现,可以调用手机系统系统的分享功能,这样可以省去很多的麻烦,但是系统的分享是一次性启用整个手机的所有分享,有时候会非常的多,并不是我们所需要的。
所以我写了一个工具类,用来实现指定的平台来分享图片和视频,再也不用接入分享SDK了
核心方法如下,根据指定的包名和分享方式,过滤所需要的的平台,返回指定的分享intent
private Intent getChooser(String packageName,String packageMage){ Intent openInChooser; List<LabeledIntent> intentList = new ArrayList<LabeledIntent>(); PackageManager pm = mContext.getPackageManager(); for (int i = 0; i < resInfo.size(); i++) { ResolveInfo ri = resInfo.get(i); String itemPackageName = ri.activityInfo.packageName; String itemPackageMage = String.valueOf(ri.loadLabel(pm)); if (itemPackageName.equals(packageName) && itemPackageMage.equals(packageMage)) { Intent intent = new Intent(); intent.setComponent(new ComponentName(itemPackageName, ri.activityInfo.name)); intent.setAction(Intent.ACTION_SEND); intent.setType(type); intent.putExtra(Intent.EXTRA_SUBJECT, title); intent.putExtra(Intent.EXTRA_TEXT, text); intent.putExtra(Intent.EXTRA_STREAM, uri); intentList.add(new LabeledIntent(intent, itemPackageName, ri.loadLabel(pm), ri.icon)); } } if (intentList.size() > 0) { openInChooser = Intent.createChooser(intentList.remove(0), "请选择您要分享的方式"); LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]); openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents); } else { return null; } return openInChooser; }至于包名和分享方式,已经把常用的写在内部类
static class PackageInfo{ /* 这些包名和方法名,都是在getChooser的循环中输出的itemPackageName和itemPackageMage 如有需要,可以自行添加 */ static String QQ_PACKAGE_NAME="com.tencent.mobileqq"; static String QQ_FRIEND="发送给好友"; static String QQ_COLLECT="保存到QQ收藏"; static String QQ_PC="发送到我的电脑"; static String QQ_FACE_SEND="面对面快传"; static String WX_PACKAGE_NAME="com.tencent.mm"; static String WX_FRIEND="发送给朋友"; static String WX_COLLECT="添加到微信收藏"; static String WX_MOMENTS="发送到朋友圈"; static String WB_PACKAGE_NAME="com.sina.weibo"; static String WB_BLOG="微博"; static String WB_STORY="微博故事"; static String WB_FRIEND="微博好友"; static String BAIDU_DISK_PACKAGE_NAME="com.baidu.netdisk"; static String BAIDU_DISK_SAVE="保存到网盘"; static String BLUETOOTH_PACKAGE_NAME="com.android.bluetooth"; static String BLUETOOTH_SEND="蓝牙"; static String ALIPAY_PACKAGE_NAME="com.eg.android.AlipayGphone"; static String ALIPAY_SCAN_CODE="支付宝二维码识别"; }最后使用的时候就非常简单了
public void shareQQFriend(){ //发送给QQ好友 startShareActivity(getChooser(PackageInfo.QQ_PACKAGE_NAME,PackageInfo.QQ_FRIEND)); } public void shareWeChatCollection(){ //发送给微信收藏 startShareActivity(getChooser(PackageInfo.WX_PACKAGE_NAME,PackageInfo.WX_COLLECT)); } public void shareWeChatMoments(){ //发送给微信朋友圈 startShareActivity(getChooser(PackageInfo.WX_PACKAGE_NAME,PackageInfo.WX_MOMENTS)); }完整DEmo
https://download.csdn.net/download/y280903468/12570166