微信分享功能详解

时间:2015-02-04 18:43:24   收藏:0   阅读:330
相信来看帖子朋友都有看过【微信官方的开发文档】,所以神马申请APP_ID之类的我就不多说了,直接讲代码,请大家看清楚我写的【注释】
地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN&token=805e15102d4e99fcef6ea996c3b0d5acfa1a34ac
步骤:
1.需要的key,通过创建应用,去通过微信的审核。

2.填写平台信息,需要的签名去获取。然后就是下面的具体步骤了。

3.下载开发工具的jar.技术分享  这里面的jar也要部署到项目当中去拉

-----------------------------------  1、执行分享的操作的方法  --------------------------------------------------------------------------------------
一、在编码之前请一定将【微信的提供的 libammsdk.jar 导入 libs文件夹中解压】

public class ShareAppDialog_T extends Dialog implements android.view.View.OnClickListener,
        OnTouchListener {
        
        // 发送的目标场景,WXSceneSession表示发送到会话
        private static final int WXSceneSession = 0; 

        // 发送的目标场景,WXSceneTimeline表示发送朋友圈
        private static final int WXSceneTimeline = 1; 
        private IWXAPI api;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        // 注册微信sdk
            api = WXAPIFactory.createWXAPI(getContext(), Constants.APP_ID, true);
            api.registerApp(Constants.APP_ID);

    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id) {
            case 分享到微信好友:
                    sendWxUrl(WXSceneSession);
                break;

            cas 分享到微信朋友圈:
                    sendWxUrl(WXSceneTimeline);
                break;
    }

        /**
         * 此方法是写的分享链接,如果朋友想要分享【图片,文字,等其他可下载微信官方Demo,SendToWXActivity.java类中写的很清楚】
         * @param scene 0代表好友   1代表朋友圈
         */
        public void sendWxUrl(int scene){
                
                WXWebpageObject webpage = new WXWebpageObject();
                webpage.webpageUrl = getContext().getResources().getString(R.string.share_url);;
                WXMediaMessage msg = new WXMediaMessage(webpage);
                msg.title = getContext().getResources().getString(R.string.share_title);
                msg.description = getContext().getResources().getString(R.string.share_content);
                Bitmap thumb = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.icon);
                msg.thumbData = MMAlert.bmpToByteArray(thumb, true);
                
                SendMessageToWX.Req req = new SendMessageToWX.Req();
                req.transaction = buildTransaction("webpage");
                req.message = msg;
                if (scene == 0) {
                        // 分享到微信会话
                        req.scene = SendMessageToWX.Req.WXSceneSession; 
                } else {
                        // 分享到微信朋友圈
                        req.scene = SendMessageToWX.Req.WXSceneTimeline; 
                }
                api.sendReq(req);
        

                this.dismiss(); // 由于我这个类是一个Dialog, 如果你的类是Activity请调用 finish();
                        
                
        }
        
        // 过滤发送内容格式
        private String buildTransaction(final String type) {
                return (type == null) ? String.valueOf(System.currentTimeMillis())
                                : type + System.currentTimeMillis();
        }        


}

---------------------------------------- 2、想要实现【微信的回调】(即分享状态) ------------------------------------------------------------------------------

一、必须在你的工程中新建一个以 【.wxapi】 的包例如: com.boco.huipai.user.wxapi

二、在包中新建一个Activity,【类名必须叫 WXEntryActivity 】

三、当前 Activity 必须实现【微信的 IWXAPIEventHandler 】


四、WXEntryActivity 类的layout布局文件不用做任何编码

五、WXEntryActivity 中代码实现
<!-- 微信分享回调实现界面 -->
package com.boco.huipai.user.wxapi;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.widget.Toast;

import com.boco.huipai.user.Constants;
import com.boco.huipai.user.R;
import com.tencent.mm.sdk.openapi.BaseReq;
import com.tencent.mm.sdk.openapi.BaseResp;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;

public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
        
        private IWXAPI api;
        
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // 注册微信sdk
            api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, true);
            api.registerApp(Constants.APP_ID);
            api.handleIntent(getIntent(), this);
    }

/**
*  微信发送请求到第三方应用时,会回调到该方法
*/
        @Override
        public void onReq(BaseReq req) {
                
        }
/**
* 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
*/
        @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();
                finish();
        }
}



六、AndroidManifest.xml 文件注册 WXEntryActivity 


      【注意:android:exported="true" 必须配置】


        <activity
            android:name="com.boco.huipai.user.wxapi.WXEntryActivity"
            android:exported="true">
        </activity>
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!