Android之微信開放平臺實現分享(分享好友和朋友圈)
阿新 • • 發佈:2019-02-02
開發中分享操作往往經常遇到,而且還是一些比較大型一定的平臺,如微信,QQ,微博等。寫這篇部落格主要是把微信的的分享和相關操作表達一下,分享可以包含:文字,視訊,音樂,圖片等分享。
分享可以有 分享給好友,群,朋友圈等。
效果如下圖:(注意:功能根據自己的需要選擇就可以了)
準備工作:
成功之後得到AppId,放入專案中。
public class Constants { // APP_ID 替換為你的應用從官方網站申請到的合法appId== public static final String APP_ID = "wx1b73fd7b49ffa027"; public static class ShowMsgActivity { public static final String STitle = "showmsg_title"; public static final String SMessage = "showmsg_message"; public static final String BAThumbData = "showmsg_thumb_data"; }
public class AppRegister extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final IWXAPI api = WXAPIFactory.createWXAPI(context, null);
// 將該app註冊到微信
api.registerApp(Constants.APP_ID);
}
}
文字分享程式碼:
// 初始化一個WXTextObject物件 WXTextObject textObj = new WXTextObject(); textObj.text = text; // 用WXTextObject物件初始化一個WXMediaMessage物件 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = textObj; // 傳送文字型別的訊息時,title欄位不起作用 msg.title = "Will be ignored"; msg.description = text; // 構造一個Req SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("text"); // transaction欄位用於唯一標識一個請求 req.message = msg; /** * 判斷是否是朋友圈 */ req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; // 呼叫api介面傳送資料到微信 api.sendReq(req);
圖片分享程式碼:(包含 本地圖片,SD卡圖片,網路圖片)
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.send_img); WXImageObject imgObj = new WXImageObject(bmp); WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj; Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true); bmp.recycle(); msg.thumbData = Util.bmpToByteArray(thumbBmp, true); // 設定所圖; SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("img"); req.message = msg; req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req);
音樂分享程式碼
WXMusicObject music = new WXMusicObject();
music.musicUrl="http://staff2.ustc.edu.cn/~wdw/softdown/index.asp/0042515_05.ANDY.mp3";
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = music;
msg.title = "標題";
msg.description = "描述資訊";
Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.send_music_thumb);
msg.thumbData = Util.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("music");
req.message = msg;
req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
視訊分享程式碼
WXVideoObject video = new WXVideoObject();
video.videoUrl = "url....mp4";//mp4視訊路徑
WXMediaMessage msg = new WXMediaMessage(video);
msg.title = "標題";
msg.description = "描述資訊";
Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.send_music_thumb); msg.thumbData = Util.bmpToByteArray(thumb, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("video"); req.message = msg; req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req);
網頁分享程式碼:
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "http://www.baidu.com";
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "標題";
msg.description = "描述資訊";
Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.send_music_thumb);
msg.thumbData = Util.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
等等。
程式碼下載