Android平台的微信分享

来源:互联网 发布:java 函数重载形式 编辑:程序博客网 时间:2024/04/30 23:55

现在微信分享已经是一个app必备的功能,在这里简单的介绍一下最基本的微信分享的功能。

主要流程:

1,在微信开发平台注册账号,这与微信账号不同,微信开放平台

2,在微信开放平台创建你的应用app

3,导入微信sdk

4,启动微信

5,分享文本到好友或朋友圈

6,分享图片到好友或朋友圈

7,分享音频到好友或朋友圈

8,分享视频到好友或朋友圈

9,分享url到好友或朋友圈

10,分享表情到好友或朋友圈


2,在微信开放平台创建你的应用app,建议现在你的IDE中创建你的项目,然后在根据你的项目在开放平台上创建

响应的应用。注意包名必须与你的IDE中项目包名一致,应用签名必须使用开放平台资源下载-签名生成工具生成的签名。


3,导入微信sdk,即将libammsdk.jar考入libs文件中。右击jar-build path - configure build path...

然后在AndroidManifest.xml中添加响应的权限,移动应用接入指南


4,启动微信:

要调用微信sdk中的api,必须先初始化(在以后的api调用中,都默认已经初始化)

    private IWXAPI mIWXAPI = null;//定义成员变量    public static final String AppId = "wx94697bac0300039f";//在开放平台创建项目时,获得appId。
初始化:

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_testweixin);        initViews();        mContext = this;        mIWXAPI = WXAPIFactory.createWXAPI(mContext, AppId,true);        mIWXAPI.registerApp(AppId);        registerListener();    }

启动微信的api调用:

Toast.makeText(mContext, ""+mIWXAPI.openWXApp(), Toast.LENGTH_LONG).show();//顺便Tosat了返回的结果。

5,分享文本到好友或朋友圈

    /**     * 发送消息到微信     *      */    private void shareTextToWX() {        String text = et_share_content.getText().toString();        WXTextObject textObj = new WXTextObject();        textObj.text = text;        WXMediaMessage mediaMsg = new WXMediaMessage();        mediaMsg.mediaObject = textObj;        mediaMsg.description = text;        // 创建一个请求的对象        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.message = mediaMsg;        // 唯一标示        req.transaction = System.currentTimeMillis() + "text";        // 标示发送给朋友或朋友圈        if (tg.isChecked()) {            req.scene = SendMessageToWX.Req.WXSceneSession;        } else {            req.scene = SendMessageToWX.Req.WXSceneTimeline;        }        mIWXAPI.sendReq(req);    }

6,分享图片到好友或朋友圈

6.1,二进制图片

    /**     * 分享二进制     */    private void shareImageToWxWidthBinary() {        Options options = new Options();        options.inSampleSize = 3;        // 第一步,获取bitmap对象        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.shamo, options);        // 第二步,创建Wx。。。Object对象,并包装bitmap        WXImageObject wxObj = new WXImageObject(bitmap);// 设置原图        // 第三步,创建WxMediaMessage对象,并包装object对象        WXMediaMessage wxMsg = new WXMediaMessage();        wxMsg.mediaObject = wxObj;        // 压缩图像        Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true);        bitmap.recycle();// 释放资源        wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 10);// 缩率图大小不能超过32k        // 第四步,创建一个请求对象        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = buildUniqueTransaction("img");        req.message = wxMsg;        // 第六步,设置分享的对象        if (tg.isChecked()) {            req.scene = SendMessageToWX.Req.WXSceneSession;        } else {            req.scene = SendMessageToWX.Req.WXSceneTimeline;        }        Toast.makeText(this, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show();        Log.i(tag, "分享成功");    }

6.2,分享本地图片

    /**     * 分享本地     */    private void shareImageToWXFromLocal() {        File parent = Environment.getExternalStorageDirectory();        File file = new File(parent, "shamo.jpg");        if (!file.exists()) {            Toast.makeText(this, "文件不存在", Toast.LENGTH_LONG).show();            return;        }        // 第一步,创建Wx。。。Object对象,并包装bitmap        WXImageObject wxObj = new WXImageObject();// 设置原图        wxObj.imagePath = file.getAbsolutePath();        // 第二步,创建WxMediaMessage对象,并包装object对象        WXMediaMessage wxMsg = new WXMediaMessage();        wxMsg.mediaObject = wxObj;        Options options = new Options();        options.inSampleSize = 6;        // 第三步,获取bitmap对象        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options);        // 压缩图像        Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true);        bitmap.recycle();// 释放资源        wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 10);// 缩率图大小不能超过32k        // 第四步,创建一个请求对象        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = buildUniqueTransaction("img");        req.message = wxMsg;        // 第六步,设置分享的对象        if (tg.isChecked()) {            req.scene = SendMessageToWX.Req.WXSceneSession;        } else {            req.scene = SendMessageToWX.Req.WXSceneTimeline;        }        Toast.makeText(this, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show();        Log.i(tag, "分享成功");    }

6.3,分享网络图片

    /**     * 发送图片url     */    private void shareImageToWXWidthUrl() {        new Thread() {            @Override            public void run() {                String url = "http://g.hiphotos.baidu.com/image/pic/item/960a304e251f95ca2f34115acd177f3e6609521d.jpg";                // 第一步,创建Wx。。。Object对象,并包装bitmap                WXImageObject wxObj = new WXImageObject();// 设置原图                wxObj.imageUrl = url;                // 第二步,创建WxMediaMessage对象,并包装object对象                WXMediaMessage wxMsg = new WXMediaMessage();                wxMsg.mediaObject = wxObj;                Options options = new Options();                options.inSampleSize = 6;                // 第三步,获取bitmap对象                Bitmap bitmap = null;                try {                    bitmap = BitmapFactory.decodeStream(new URL(url).openStream());                } catch (Exception e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }                // 压缩图像                Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true);                bitmap.recycle();// 释放资源                wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 10);// 缩率图大小不能超过32k                // 第四步,创建一个请求对象                final SendMessageToWX.Req req = new SendMessageToWX.Req();                req.transaction = buildUniqueTransaction("img");                req.message = wxMsg;                // 第六步,设置分享的对象                if (tg.isChecked()) {                    req.scene = SendMessageToWX.Req.WXSceneSession;                } else {                    req.scene = SendMessageToWX.Req.WXSceneTimeline;                }                mHandler.post(new Runnable() {                    @Override                    public void run() {                        Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG)                                .show();                    }                });                Log.i(tag, "分享成功");            }        }.start();    }

7,分享音频到好友或朋友圈

    /**     * 分url音频     */    private void shareAudioToWX() {        // 第一步创建封装的obj        WXMusicObject musicObj = new WXMusicObject();        musicObj.musicUrl = "http://music.baidu.com/song/999104?pst=sug";        // 创建MediaMessage        WXMediaMessage wxMsg = new WXMediaMessage();        wxMsg.mediaObject = musicObj;        wxMsg.title = "向天再借五百年";        wxMsg.description = "演唱者:韩磊";        // 创建缩略图        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.music);        Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true);        bitmap.recycle();// 释放资源        wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100);        // 创建请求对象        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = buildUniqueTransaction("audio");        req.message = wxMsg;        if (tg.isChecked()) {// 分享的对象            req.scene = SendMessageToWX.Req.WXSceneSession;        } else {            req.scene = SendMessageToWX.Req.WXSceneTimeline;        }        // 分享        Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show();    }

8,分享视频到好友或朋友圈

    /**     * 分享视频     */    private void shareVideoToWx() {        //创建Obj        WXVideoObject video = new WXVideoObject();        video.videoUrl = "http://v.youku.com/v_show/id_XMTM5NjM0NDgyNA==.html?from=y1.7-2";                //        WXMediaMessage wxMsg = new WXMediaMessage();        wxMsg.mediaObject = video;        wxMsg.title = "午夜花火";        wxMsg.description = "锦尚天舞";                //创建缩略图         Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.video);        Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true);        bitmap.recycle();// 释放资源        wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100);                //创建请求对象        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = buildUniqueTransaction("video");        req.message = wxMsg;        if (tg.isChecked()) {// 分享的对象            req.scene = SendMessageToWX.Req.WXSceneSession;        } else {            req.scene = SendMessageToWX.Req.WXSceneTimeline;        }        // 分享        Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show();    }

9,分享url 到好友或朋友圈

    /**     * 分享网页     */    private void sharePageToWX() {        // 第一步创建WebPage对象        WXWebpageObject webPage = new WXWebpageObject();        webPage.webpageUrl = "http://www.imooc.com/course/list";        // 创建MediaMessage        WXMediaMessage wxMsg = new WXMediaMessage();        wxMsg.mediaObject = webPage;        wxMsg.title = "慕课网";        wxMsg.description = "在线IT教学网站";        // 创建缩略图        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.muke);        Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true);        bitmap.recycle();// 释放资源        wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100);        // 创建请求对象        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = buildUniqueTransaction("video");        req.message = wxMsg;        if (tg.isChecked()) {// 分享的对象            req.scene = SendMessageToWX.Req.WXSceneSession;        } else {            req.scene = SendMessageToWX.Req.WXSceneTimeline;        }        Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show();    }

10,分享表情到好友或朋友圈

    /**     * 分享表情     */    private void shareFaceToWX(){        File parent = Environment.getExternalStorageDirectory();        File file = new File(parent,"face.gif");        //第一步,创建一个封装表情的对象        WXEmojiObject emoji = new WXEmojiObject();        emoji.emojiPath = file.getAbsolutePath();                // 创建MediaMessage        WXMediaMessage wxMsg = new WXMediaMessage();        wxMsg.mediaObject = emoji;        wxMsg.title = "表情标题";        wxMsg.description = "表情描述";        // 创建缩略图        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.face);        Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true);        bitmap.recycle();// 释放资源        wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100);        // 创建请求对象        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = buildUniqueTransaction("face");        req.message = wxMsg;        if (tg.isChecked()) {// 分享的对象            req.scene = SendMessageToWX.Req.WXSceneSession;        } else {            req.scene = SendMessageToWX.Req.WXSceneTimeline;        }        Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show();            }

其他辅助代码
    /**     * 将Bitmap转化成一个二进制的数组     *      * @param bitmap     * @return     * @throws IOException     */    private byte[] bmpToByteArray(Bitmap bitmap, boolean needRecyle, int scale) {        byte[] byteArray = null;        try {            ByteArrayOutputStream bos = new ByteArrayOutputStream();            bitmap.compress(CompressFormat.PNG, scale, bos);            byteArray = bos.toByteArray();            if (needRecyle) {                bitmap.recycle();            }            bos.close();        } catch (Exception e) {            e.printStackTrace();        }        return byteArray;    }    /**     * 创建唯一标示     *      * @return     */    private String buildUniqueTransaction(String str) {        String uniqueTransaction = String.valueOf(System.currentTimeMillis()) + str;        return uniqueTransaction;    }


特别注意,在设置缩略图,缩略图有严格的要求:大小不能超过32k,高宽也有要求,另外限制的还有title、description等参数的。


0 0
原创粉丝点击