使用Android用自带系统分享功能(填坑,包括微博分享,多图片分享+文字)

来源:互联网 发布:江宁区广电网络营业厅 编辑:程序博客网 时间:2024/05/16 17:20
因公司需求,需要多图片+文字转发分享功能,因为第三方分享,比如友盟shareSDK,只能分享单张图片,所以只能用系统分享功能。还有填坑过程,供大家参考,也为自己做笔记。

直接上代码:

     /**     *     * @param type   0微信朋友 分享,1微信朋友圈,2 QQ好友分享 , 3 qq空间分享 ,4新浪分享     * @param fileList  文件list,注意(是本地文件,网络图片需要上网下载到本地保存了才能分享)     * @param context      */    public static void startShare(int type,String content, List<File> fileList, Context context) {        String mPackageName = "";        String mActivityName = "";        String uninstallTips = "";        switch (type){            case 0:  //微信                mPackageName = "com.tencent.mm";                mActivityName = "com.tencent.mm.ui.tools.ShareImgUI";                uninstallTips = context.getResources().getString(R.string.wx_uninstallSoftware);                break;            case 1: //微信朋友圈                mPackageName = "com.tencent.mm";                mActivityName = "com.tencent.mm.ui.tools.ShareToTimeLineUI";                uninstallTips = context.getResources().getString(R.string.wx_uninstallSoftware);                break;            case 2: //qq好友分享                mPackageName = "com.tencent.mobileqq";                mActivityName = "com.tencent.mobileqq.activity.JumpActivity";                uninstallTips = context.getResources().getString(R.string.qq_uninstallSoftware);                break;            case 3: //QQ空间,貌似我找不到qq空间的分享,所以暂时不支持                uninstallTips = "暂时不支持";                break;            case 4:  //新浪分享                mPackageName = "com.sina.weibo";                mActivityName = "com.sina.weibo.EditActivity";                uninstallTips = context.getResources().getString(R.string.sina_uninstallSoftware);                break;        }        if (!uninstallSoftware(context, mPackageName)) {            Toast.makeText(context,uninstallTips, Toast.LENGTH_SHORT).show();            return;        }        ArrayList<Uri> uriList = new ArrayList<>();        for (File file : fileList){            uriList.add(Uri.fromFile(file));        }        Intent shareIntent = new Intent();        shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);        if (type == 4){  //如果是新浪微博就不用设置activity接收(重点,因为部分微博客户端是不需要设置的,否则会显示无法打开微博客户端)            shareIntent.setPackage(mPackageName);        }else {            shareIntent.setClassName(mPackageName, mActivityName);        }        shareIntent.putExtra(Intent.EXTRA_TEXT, content);           shareIntent.putExtra("Kdescription", content);  //设置该属性就能设置分享文本内容        //shareIntent.putExtra(Intent.EXTRA_STREAM, uriList.get(0)); //单张图片分享        shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);  //多张图片        shareIntent.setType("image/*");        context.startActivity(Intent.createChooser(shareIntent, "Share images to.."));    }       /**     * 检测客户端有木有安装     * @param context     * @param packageName     * @return     */    private static boolean uninstallSoftware(Context context, String packageName) {        PackageManager packageManager = context.getPackageManager();        try {            PackageInfo packageInfo = packageManager.getPackageInfo(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);            if (packageInfo != null) {                return true;            }        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        return false;    }
0 0