无需集成SDK,实现Android端的分享图片和视频功能。

最近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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章