IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 2021-09-09 -> 正文阅读

[移动开发]2021-09-09

准备工作(APP_ID等参数 官网上教程很全)

需要注意包名及签名是否正确

creator 连接 Android 代码

jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “StartWeiXin”, “()V”);
在这里插入图片描述

creator 接收 Android 回调

//第三方回调
window.onGameLoginRsp = 
    // 登录回调
    function(code) 
    {
        //请求token
        let request = loader.getXMLHttpRequest();
        var url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="  + PublicDefine.AppIDWX + "&secret=" + PublicDefine.AppSecretWX + "&code=" + code + "&grant_type=authorization_code";
        request.open("GET" , url,true) ;
        request.onreadystatechange = function()
        {
            if( request. readyState == 4 && (request. status >= 200 && request. status < 300))
            {
                let response = request.responseText;
                console.log (response);
                var responseJson = JSON. parse (response)
                if(responseJson.access_token)
                {
                    //请求玩家信息
                    var requestInfo = loader.getXMLHttpRequest();
                    var url = "https://api.weixin.qq.com/sns/userinfo?access_token="  + responseJson.access_token + "&openid=" + responseJson.openid;
                    SceneManager.getInstance().showWaitLayer();
                    console.log(url);
                    requestInfo. open("GET" , url,true) ;
                    requestInfo . onreadystatechange = function()
                    {
                        if( requestInfo. readyState == 4 && (requestInfo. status >= 200 && requestInfo. status < 300)) 
                        {
                            var response = requestInfo.responseText;
                            cc.log("Pando: sendHttpGet second ");
                            console.log (response);
                            var responseJson = JSON. parse (response)
                            if(responseJson){ }
                        }
                    }
                    requestInfo.send( );
                }
            }
        }
        request.send();
    };

Android studio 修改

build.gradle 文件 dependencies 引用微信Android sdk

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
    implementation fileTree(dir: "F:/CocosCreator/2.2.2/resources/cocos2d-x/cocos/platform/android/java/libs", include: ['*.jar'])
    implementation project(':libcocos2dx')

    api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

在这里插入图片描述

微信API

获取IWXAPI的实例 并将应用的appId注册到微信

api = WXAPIFactory.createWXAPI(this, ConstInfo.APP_ID, true);
 // 将应用的appId注册到微信
api.registerApp(ConstInfo.APP_ID);

 AppActivity 中onCreate 下

 /** 微信授权 */
    public static void StartWeiXin() {
        System.out.println("Pando: StartWeiXin");
        SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";
        req.state = "order";
        api.sendReq(req);
    }

WXEntryActivity 建立

注意 WXEntryActivity 路径问题 你的包名.wxapi.WXEntryActivity 在这里插入图片描述
回调cocos方法可能出现参数问题 字符串一定补充好 \" 否则会报错

@Override
	public void onResp(BaseResp resp) {
		System.out.println("Pando:----resp type " + resp.getType() + ", resp code " + resp.errCode);

		// 授权
		if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {
			if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
				final SendAuth.Resp authResp = (SendAuth.Resp)resp;
				// 授权成功回调
				System.out.println("Pando: StartWeiXin success");
				Cocos2dxHelper.runOnGLThread(new Runnable() {
					@Override
					public void run() {
						String funCocos = "onGameLoginRsp(\"" + authResp.code + "\")";
						System.out.println(funCocos);
						Cocos2dxJavascriptJavaBridge.evalString(funCocos);
					}
				});
			} else {
				// 授权失败回调
				System.out.println("Pando: StartWeiXin fail");
			}
		}
        finish();
	}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="你的包名"
    android:installLocation="auto">

    <uses-feature android:glEsVersion="0x00020000" />

    <!-- for mta statistics, not necessary-->
    <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"/>

    <application
        android:usesCleartextTraffic="true"
        android:allowBackup="true"
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher">
        
        <!-- Tell Cocos2dxActivity the name of our .so -->
        <meta-data android:name="android.app.lib_name"
                   android:value="cocos2djs" />
        <meta-data
            android:name="android.max_aspect"
            android:value="2.4" />
        <activity
            android:name="org.cocos2dx.javascript.AppActivity"
            android:screenOrientation="sensorLandscape"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:usesCleartextTraffic="true"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:launchMode="singleTask" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="你的包名.wxapi.WXEntryActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="true"
            android:launchMode="singleTask">
        </activity>
    </application>
<!--    <queries>-->
<!--        <package android:name="com.tencent.mm" />-->
<!--    </queries>-->
</manifest>

注意

WXEntryActivity 路径如果放在 org.cocos2dx.javascript.wxapi 下可能导致微信回调接受不到 (我出了这问题 纠结半天)

PROP_TARGET_SDK_VERSION 版本为30 android 11手机安装失败.



  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 00:00:22  更:2021-09-11 00:00:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:32:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码