無需集成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

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