代码"/>
cocos2d手游之微信分享sdk的安卓源代码
这是微信分享的一个重要文件,必须放在“工程全名.wxapi”的目录下面。例如工程名为org.cocos2dx.lua,则WXEntryActivity.java就必须建立在org.cocos2dx.lua.wxapi的目录。
1.WXEntryActivity.java
package com.mz.maoxian.lenovo.wxapi;import java.io.IOException;
import java.io.InputStream;import org.cocos2dx.lua.AppActivity;import com.tencent.mm.sdk.openapi.BaseReq;
import com.tencent.mm.sdk.openapi.BaseResp;
import com.tencent.mm.sdk.openapi.ConstantsAPI;
import com.tencent.mm.sdk.openapi.SendMessageToWX;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.tencent.mm.sdk.openapi.WXImageObject;
import com.tencent.mm.sdk.openapi.WXMediaMessage;
import com.tencent.mm.sdk.openapi.WXTextObject;
import com.tencent.mm.sdk.openapi.WXWebpageObject;import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;public class WXEntryActivity extends Activity implements IWXAPIEventHandler {private static final int TIMELINE_SUPPORTED_VERSION = 0x21020001;public static final String APP_ID = "wxc8a10e8a59add48b";// IWXAPI 是第三方app和微信通信的openapi接口private static IWXAPI api;public static void myLog(String str){Log.i("wc", str);}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);myLog("onCreate in Weixin entry");this.initWX();}private static String buildTransaction(final String type) {return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();}public void initWX(){// 通过WXAPIFactory工厂,获取IWXAPI的实例api = WXAPIFactory.createWXAPI(this, APP_ID, false);api.registerApp(APP_ID);api.handleIntent(getIntent(), this);}
// private static Bitmap getImageFromAssetsFile(AppActivity activity, String fileName)
// {
// Bitmap image = null;
// AssetManager am = activity.getResources().getAssets();
// try
// {
// InputStream is = am.open(fileName);
// image = BitmapFactory.decodeStream(is);
// is.close();
// }
// catch (IOException e)
// {
// Log.i("wc", "getImageFromAssetsFile error");
// e.printStackTrace();
// }
//
// return image;
//
// } public static void sendImageWithAPI(IWXAPI api, AppActivity activity, 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){myLog("bmp is null");Toast.makeText(activity, "image path not find, path:" + smallPng, Toast.LENGTH_LONG).show();return;}if(bmpBig == null){myLog("bmp is null");Toast.makeText(activity, "image path not find, 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);myLog("send img ok");}public static void sendURLWithAPI(IWXAPI api, AppActivity activity, String png, String title, String desc, String url, int mode){ Bitmap bmp = BitmapFactory.decodeFile(png);if(bmp == null){Toast.makeText(activity, "image path not find, 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);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);Log.i("wc", "onNewIntent");
// setIntent(intent);
// api.handleIntent(intent, this);}// 微信发送请求到第三方应用时,会回调到该方法@Overridepublic void onReq(BaseReq req) {Log.i("wc", "onReq");switch (req.getType()) {case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX://goToGetMsg(); break;case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX://goToShowMsg((ShowMessageFromWX.Req) req);break;default:break;}}// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法@Overridepublic void onResp(BaseResp resp) {Log.i("wc", "onResp");Log.i("wc", String.format("%d", resp.errCode));switch (resp.errCode) {case BaseResp.ErrCode.ERR_OK:break;case BaseResp.ErrCode.ERR_USER_CANCEL:break;case BaseResp.ErrCode.ERR_AUTH_DENIED:break;default:break;}if(resp.errCode == BaseResp.ErrCode.ERR_OK){backToAppActivityWithSuccess(true);}else{backToAppActivityWithSuccess(false);}}private void backToAppActivityWithSuccess(boolean success){if(success){AppActivity.nativeSendMessage("addevent;104");}else{AppActivity.nativeSendMessage("addevent;105");}Intent intent = new Intent();intent.setClass(WXEntryActivity.this, AppActivity.class);startActivity(intent);finish();((WXEntryActivity) WXEntryActivity.this).overridePendingTransition(0, 0);}private static boolean checkCanSendToFriend(IWXAPI api){int wxSdkVersion = api.getWXAppSupportAPI();if (wxSdkVersion >= TIMELINE_SUPPORTED_VERSION) {return true;} else {return false;}}}
2. 用法代码
private static IWXAPI api = null;
private void sendWeixinImage(int mode, String smallPng, String bigPng){if(api == null){api = WXAPIFactory.createWXAPI(this, WXEntryActivity.APP_ID);api.registerApp(WXEntryActivity.APP_ID);}WXEntryActivity.sendImageWithAPI(api, this, mode, smallPng, bigPng);}private void sendWeixinURL(String png, String title, String desc, String url, int mode){if(api == null){api = WXAPIFactory.createWXAPI(this, WXEntryActivity.APP_ID);api.registerApp(WXEntryActivity.APP_ID);}WXEntryActivity.sendURLWithAPI(api, this, png, title, desc, url, mode);}
更多推荐
cocos2d手游之微信分享sdk的安卓源代码
发布评论