android接入微信分享(朋友、朋友圈)、QQ分享(好友、空间)

1、申请注册你的appid 
2、下载sdk 
QQ: http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 
微信:https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN 
3、将下载的文件

导入进工程下的app/libs/下,liba开头的的微信需要的,另外两个是QQ需要的 
阅读官方文档QQ:http://wiki.open.qq.com/wiki/mobile/API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E#portal-header 
微信:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN 
PS: 微信需要安装签名生成工具输入包名申请。

4、在 AndroidManifest.xml 中配置

微信:

<activity
            android:name=".wxapi.WXEntryActivity"
            android:exported="true">
        </activity>

QQ:

<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你的appid" />
            </intent-filter>
        </activity>
        <activity android:name="com.tencent.connect.common.AssistActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize" />
    </application>

5、接下来就是代码,微信还需要在报名下指定文件夹中新建指定类名的activity

WXEntryActivity类:

public class WXEntryActivity  extends AppCompatActivity implements IWXAPIEventHandler {
    private final String APP_ID= "你的appid";
    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 通过WXAPIFactory工厂,获取IWXAPI的实例
        api = WXAPIFactory.createWXAPI(this, APP_ID, false);
        api.registerApp(APP_ID);
        api.handleIntent(getIntent(), this);
    }

    //微信发送消息给app,app接受并处理的回调函数
    @Override
    public void onReq(BaseReq req) {

    }

    //app发送消息给微信,微信返回的消息回调函数,根据不同的返回码来判断操作是否成功
    @Override
    public void onResp(BaseResp resp) {
        int result = 0;

        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                result = R.string.errcode_success;
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                result = R.string.errcode_cancel;
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                result = R.string.errcode_deny;
                break;
            default:
                result = R.string.errcode_unknown;
                break;
        }

        Toast.makeText(this, result, Toast.LENGTH_LONG).show();
    }
}

ShareActivity类:

public class ShareActivity extends BaseActivity implements View.OnClickListener {
    private final String W_APPID = "你的appid";
    private IWXAPI api;

    private final String Q_APPID = "你的appid";
    private Tencent mTencent;

    private Button quit;
    private ImageView qZone;
    private ImageView qq;
    private ImageView weichat;
    private ImageView weichatFriend;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.share_popup);
        regToWx();
        regToQQ();
        setBaseActionbar();
        initView();
    }

    private void regToQQ() {
        // Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
        // 其中APP_ID是分配给第三方应用的appid,类型为String。
        mTencent = Tencent.createInstance(Q_APPID, mContext);
    }

    private void regToWx() {
        api = WXAPIFactory.createWXAPI(this, W_APPID, true);
        api.registerApp(W_APPID);
    }

    private void initView() {
        quit = (Button) findViewById(R.id.quit);
        qZone = (ImageView) findViewById(R.id.qzone);
        qq = (ImageView) findViewById(R.id.qq);
        weichat = (ImageView) findViewById(R.id.weichat);
        weichatFriend = (ImageView) findViewById(R.id.weichat_friend);
        actionbarLeft.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        quit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });

        qZone.setOnClickListener(this);
        qq.setOnClickListener(this);
        weichat.setOnClickListener(this);
        weichatFriend.setOnClickListener(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    private void setBaseActionbar() {
        setActionbarLeft(R.mipmap.pixel_ic_toolbar_back);
        setActionbarTitle("分享", "SAHRE");
        hideActionbarRight();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.qzone:
//                mLog("点击QQ空间");
                qq(true);
                break;
            case R.id.qq:
//                mLog("点击QQ");
                qq(false);
                break;
            case R.id.weichat:
//                mLog("点击威信");
                weiChat(0);
                break;
            case R.id.weichat_friend:
//                mLog("点击朋友圈");
                weiChat(1);
                break;
            default:
                break;
        }
    }

    private void qq(boolean flag) {
        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, "分享");
        params.putString(QQShare.SHARE_TO_QQ_SUMMARY,  "墨迹天气");
        params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,  "http://www.qq.com/news/1.html");
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,"https://www.baidu.com/img/bd_logo1.png");
        if(flag){
            params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,  QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
        }
        mTencent.shareToQQ(ShareActivity.this, params, myListener);
    }

    // 0-分享给朋友  1-分享到朋友圈
    private void weiChat(int flag) {
        if (!api.isWXAppInstalled()) {
            mToast("您还未安装微信客户端", 0);
            return;
        }
        String text = "这是我做的一款天气类app,高端大气上档次,快来看看吧!";
        WXTextObject textObject = new WXTextObject();
        textObject.text = text;

        WXMediaMessage msg = new WXMediaMessage(textObject);
        msg.mediaObject = textObject;
        msg.description = text;

        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = String.valueOf(System.currentTimeMillis());//transaction字段用于唯一标识一个请求,这个必须有,否则会出错
        req.message = msg;

        //表示发送给朋友圈  WXSceneTimeline  表示发送给朋友  WXSceneSession
        req.scene = flag == 0 ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;

        api.sendReq(req);
    }

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

    private class ShareListener implements IUiListener {

        @Override
        public void onCancel() {
            mToast("分享取消",0);
        }

        @Override
        public void onComplete(Object arg0) {
            mToast("分享成功",0);
        }

        @Override
        public void onError(UiError arg0) {
            mToast("分享出错",0);
        }

    }
}

代码应该一目了然,actionbarLeft是BaseActivity中的,无视就行,接下来是几张截图,应该看的更明白

时间: 2024-10-03 13:45:48

android接入微信分享(朋友、朋友圈)、QQ分享(好友、空间)的相关文章

asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间

如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <summary> /// 分享的内容 /// 必须写在html的head里面才可以生效 /// </summary> /// <param name="fxUrl"></param> /// <returns></returns>

UC和QQ两个主流浏览器 * 点击触发微信分享到朋友圈或发送给朋友的功能(转载)

转载(声明:仅供学习使用) /** * 此插件主要作用是在UC和QQ两个主流浏览器 * 上面触发微信分享到朋友圈或发送给朋友的功能 * 代码编写过程中 参考: * http://mjs.sinaimg.cn/wap/module/share/201501261608/js/addShare.js * 此外,JefferyWang的项目对我也有一定启示: * https://github.com/JefferyWang/nativeShare.js * * @revisor [email prot

【android】 微信分享详解(分享到朋友和朋友圈)+ PopupWindow的使用和分析

一. 微信分享的实现: 1.到微信开放平台https://open.weixin.qq.com创创建应用申请AppID 2.下载签名生成工具,对签名不了解的自行百度,这里不做说明. 下面是简单的微信分享代码: 首先看一下包结构图 MainActivity: public class MainActivity extends Activity { private static final String appid = "wx86b3d972e5ddd153"; private IWXAP

微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置 原文:http://www.cnblogs.com/txw1958/p/weixin-js-sdk-demo.html

wx.ready(function () { // 1 判断当前版本是否支持指定 JS 接口,支持批量判断 document.querySelector('#checkJsApi').onclick = function () { wx.checkJsApi({ jsApiList: [ 'getNetworkType', 'previewImage' ], success: function (res) { alert(JSON.stringify(res)); } }); }; // 2.

apiCloud 三方分享,微信好友分享,微信朋友圈分享,QQ分享,微博分享

首先查看我的这篇有关三方登录的博客,地址是http://www.cnblogs.com/gqx-html/p/8303567.html,配置完三方数据后可以从上一篇文章中的链接跳转到各个登录查看api,也可以看下面 微信好友分享:https://docs.apicloud.com/Client-API/Open-SDK/wx 微信朋友圈分享:https://docs.apicloud.com/Client-API/Open-SDK/wx QQ分享:https://docs.apicloud.co

微信分享,使用js,分享给朋友,朋友圈,QQ微博

1 <script> 2 var imgUrl = "http://www.baidu.com/img/bdlogo.gif"; 3 var lineLink = "http://www.baidu.com"; 4 var descContent = '亲子游来玩了'; 5 var shareTitle = '我的标题'; 6 var appid = ''; 7 function shareFriend() { 8 WeixinJSBridge.invo

微信开发-发送给朋友,分享到朋友圈开发

微信分享功能开发 用了一天时间,把微信发送给朋友和分享到朋友圈功能开发出来,在这里给大家分享一下,避免大家走弯路. 一.服务器端程序 package com.wiimedia.controller; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.ParseException; import

微信公众平台开发(107) 分享到朋友圈和发送给好友

关键字:微信公众平台 JSSDK 发送给朋友 分享到朋友圈 onMenuShareTimeline onMenuShareAppMessage 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-js-sharetimeline.html 在这篇微信公众平台开发教程中,我们将介绍如何在网页中实现发送给朋友和分享到朋友圈时内容参数自定义的功能. 本文分为以下二个部分: 生成JS-SDK权限验证签名 实现发送给朋友和分享到朋友圈时内容参数自定义 一

UC浏览器 分享到朋友圈和微信好友

用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaimg.cn/wap/module/share/201504071745/js/addShare.min.js 从里面抽离出了分享调用的方法,方便调用.(注意:这个分享功能只在UC手机浏览器有效) if (/AppleWebKit.*Mobile/i.test(navigator.userAgent)