一、微信分享SDK介绍
2.下载微信终端开发工具包
开发工具包主要包含3部分内容:(其中,只有libammsdk.jar是必须的)
- libammsdk.jar(每个第三方应用必须要导入该sdk库,用于实现与微信的通信)
- api文档(供开发者查阅使用)
- 界面小工具源码(封装了界面表现的工具类,以及一些界面风格)
请前往“资源下载页”下载最新SDK包
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2. 注册到微信
要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。
IWXAPI api = WXAPIFactory.createWXAPI(this,WXEntryActivity.APP_ID); api.registerapp(WXEntryActivity.APP_ID); api.handleIntent(getIntent(),this);
3. 发送图片
在这之前,由于微信4.2以下版本不支持发送到朋友圈,所以有个检测是否能否发送到朋友圈的方法
private static boolean checkCanSendToFriend(IWXAPI api){ int wxsdkVersion = api.getWXAppSupportAPI(); if (wxsdkVersion >= TIMELINE_SUPPORTED_VERSION) { return true; } else { return false; } }
另外一个微信自带的生成唯一标识函数
private static String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); }
//api:IWXAPI的一个实例,已注册到app,mode:发送模式(0为聊天,1为发到朋友圈),smallPng:(缩略图绝对路径),bigPng(大图绝对路径) public static void sendImageWithAPI(IWXAPI api,int mode,String smallPng,String bigPng){ Log.i("wc","smallPng:" + smallPng + " bigPng:" + bigPng); Bitmap bmpSmall = BitmapFactory.decodeFile(smallPng); Bitmap bmpBig = BitmapFactory.decodeFile(bigPng); if(bmpSmall == null){ Log.i("wc","bmp is null"); //Toast.makeText(activity,"image path not find,path:" + smallPng,Toast.LENGTH_LONG).show(); return; } if(bmpBig == null){ Log.i("wc",path:" + bigPng,Toast.LENGTH_LONG).show(); return; } WXImageObject imgObj = new WXImageObject(bmpBig); WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj; msg.thumbData = Util.bmpToByteArray(bmpSmall,true); // 设置缩略图 SendMessagetoWX.Req req = new SendMessagetoWX.Req(); req.transaction = buildTransaction("img"); req.message = msg; //聊天 if(mode == 0){ req.scene = SendMessagetoWX.Req.WXScenesession; } //朋友圈 else if((mode == 1) && (checkCanSendToFriend(api))) { req.scene = SendMessagetoWX.Req.WXSceneTimeline; } else{ req.scene = SendMessagetoWX.Req.WXScenesession; } api.sendReq(req); Log.i("wc","send img ok"); }
4. 发送图片链接
//api:IWXAPI的实例,png:图片路径,title:标题,desc:描述,url:链接地址,mode:模式(0聊天1朋友圈) public static void sendURLWithAPI(IWXAPI api,String png,String title,String desc,String url,int mode) { Bitmap bmp = BitmapFactory.decodeFile(png); if(bmp == null){ //Toast.makeText(activity,path:" + png,Toast.LENGTH_LONG).show(); return; } WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = url; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = title; msg.description = desc; Bitmap thumb = bmp; msg.thumbData = Util.bmpToByteArray(thumb,true); SendMessagetoWX.Req req = new SendMessagetoWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; //聊天 if(mode == 0){ req.scene = SendMessagetoWX.Req.WXScenesession; } //朋友圈 else if((mode == 1) && (checkCanSendToFriend(api))) { req.scene = SendMessagetoWX.Req.WXSceneTimeline; } else{ req.scene = SendMessagetoWX.Req.WXScenesession; } api.sendReq(req); }
至此,所有关键要素都已经说明,如果需要原码,请点击查看http://www.jb51.cc/article/p-kngrlkpy-bdv.html