Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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);
    }
	
    @Override
    public 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,path:" + bigPng,Toast.LENGTH_LONG).show();
    		return;
    	}
    	
    	WXImageObject imgObj = new WXImageObject(bmpBig);
		
		WXMediamessage msg = new WXMediamessage();
		msg.mediaObject = imgObj;
		
		msg.thumbData = Util.bR_219_11845@pToByteArray(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,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.bR_219_11845@pToByteArray(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);
    }
    
    
	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		Log.i("wc","onNewIntent");
//		seTintent(intent);
//        api.handleIntent(intent,this);
	}

	// 微信发送请求到第三方应用时,会回调到该方法
	@Override
	public 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;
		}
	}

	// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
	@Override
	public 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 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 desc,int mode){
		if(api == null)
		{
			api = WXAPIFactory.createWXAPI(this,WXEntryActivity.APP_ID);
			api.registerApp(WXEntryActivity.APP_ID);
		}
		WXEntryActivity.sendURLWithAPI(api,png,title,desc,url,modE);
	}

大佬总结

以上是大佬教程为你收集整理的cocos2d手游之微信分享sdk的安卓源代码全部内容,希望文章能够帮你解决cocos2d手游之微信分享sdk的安卓源代码所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。