Android工具类— 分享到QQ(QQ空间)、微信(朋友圈)

1、分享到QQ、QQ空间:

首先第一步,在腾讯开发者平台注册,添加应用,获得APPID,然后下载SDK,导入到工程中;然后,在AndroidManifest中注册两个Activity,代码如下:


        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:noHistory="true"
            android:launchMode="singleTask" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="tencent**********" />
            intent-filter>
        activity>

        <activity android:name="com.tencent.connect.common.AssistActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"
            />

*其中里面的****就是你在开发者平台申请的APPID*

然后在Activity中写以下代码:


/**
     * 分享图片到 QQ 、QQ 空间
     */
    public static void sharePicToQQ(Activity activity, int flag, String picPath) {
        Tencent mTencent = Tencent.createInstance(APPID, activity.getApplicationContext());
        ShareListener myListener = new ShareListener();
        Bundle params = new Bundle();
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, picPath);
        params.putString(QQShare.SHARE_TO_QQ_APP_NAME, activity.getString(R.string.app_name));
        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);
        params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
        params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, flag);
        mTencent.shareToQQ(activity, params, myListener);
    }

 /**
     * 分享网址到QQ、QQ空间
     */
    private void shareToQQ(Context context, int flag, String url, String imgurl, String title, String info) {
        //flag 1是qq空间,0是好友,
        Tencent mTencent = Tencent.createInstance(APPID, context.getApplicationContext());
        ShareListener myListener = new ShareListener();
        final Bundle params = new Bundle();
        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
        params.putString(QQShare.SHARE_TO_QQ_TITLE, title);
        params.putString(QQShare.SHARE_TO_QQ_SUMMARY, info);
        params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, url);
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, imgurl);
        params.putString(QQShare.SHARE_TO_QQ_APP_NAME, String.valueOf(R.string.app_name));
        params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, flag);
        mTencent.shareToQQ(Webview.this, params, myListener);
    }

    private class ShareListener implements IUiListener {

        @Override
        public void onCancel() {
            ToastUtil.showToast(context, "分享取消");
        }

        @Override
        public void onComplete(Object arg0) {
            ToastUtil.showToast(context, "分享成功");
        }

        @Override
        public void onError(UiError arg0) {
            ToastUtil.showToast(context, "分享出错");
        }

    }
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        ShareListener myListener = new ShareListener();
        Tencent.onActivityResultData(requestCode, resultCode, data, myListener);
    }

然后,在点击事件中调用:

                //0代表QQ好友,1代表QQ空间
                case R.id.rl_share_qq:
                    shareToQQ(context, 0, ArticleUrl, imgurl, title, info);
                    break;
                case R.id.rl_share_qqzone:
                    shareToQQ(context, 1, ArticleUrl, imgurl, title, info);
                    break;

2、分享到微信、朋友圈:

首先第一步,在微信开发者平台注册,添加应用,获得APPID,然后下载SDK,导入到工程中;然后,可以写一个静态方法,在需要的地方调用:


    /**
     * 分享图片到微信、朋友圈
     */
    public static void shareImgToWechat(Context context, int flag, String path, String title, String info) {
        String APP_ID = "";
        final IWXAPI api = WXAPIFactory.createWXAPI(context.getApplicationContext(), APP_ID, true);
        WXImageObject imgObj = new WXImageObject();
        imgObj.setImagePath(path);

        WXMediaMessage msg = new WXMediaMessage();
        msg.mediaObject = imgObj;
        msg.description = info;

        Bitmap bmp = BitmapFactory.decodeFile(path);
        bmp.recycle();
        msg.title = title;
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = "img" + String.valueOf(System.currentTimeMillis());
        req.message = msg;
        req.scene = flag;
        api.sendReq(req);
    }
/**
     * 分享网址到微信、朋友圈
     */
    public static void shareToWechat(Context context, int flag, String url, String title, String info) {
        //flag 1是朋友圈,0是好友,
        String APP_ID = "";
        final IWXAPI api = WXAPIFactory.createWXAPI(context.getApplicationContext(), APP_ID, true);
        api.registerApp(APP_ID);
        if (!api.isWXAppInstalled()) {
            ToastUtil.showToast(context, "您还未安装微信客户端");
            return;
        }

        WXWebpageObject webpage = new WXWebpageObject();
        webpage.webpageUrl = url;
        WXMediaMessage msg = new WXMediaMessage(webpage);

        msg.title = title;
        msg.description = info;
        Bitmap thumb = BitmapFactory.decodeResource(context.getResources(),
                R.mipmap.ico_login_biglogo);
        msg.setThumbImage(thumb);
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = String.valueOf(System.currentTimeMillis());
        req.message = msg;
        req.scene = flag;
        api.sendReq(req);
    }

点击事件里面的调用代码:

                case R.id.rl_share_wechat:
                    ShareUtil.shareToWechat(context, 0, ArticleUrl, title, info);
                    break;
                case R.id.rl_share_wechatzone:
                    ShareUtil.shareToWechat(context, 1, ArticleUrl, title, info);
                    break;

分享到QQ、QQ空间的SDK

分享到微信、朋友圈的SDK

你可能感兴趣的:(【Android工具类】)