Android接入指南

您所在的位置:网站首页 应用未适配安卓版本 Android接入指南

Android接入指南

2024-07-13 07:32:31| 来源: 网络整理| 查看: 265

# Android接入指南

注 1:jCenter 服务将在2021年5月1日之后关停,微信 SDK 已迁移到 Maven Central,请开发者及时修改引用仓库。

注 2:微信 SDK 改成通过 Gradle 的方式发布到 Maven Central,包名做了相应修改,从原来的 com.tencent.mm.sdk 修改为 com.tencent.mm.opensdk,需要开发者修改对应的 import 语句。

注 3:接入Open SDK的开发者,请先认真阅读《微信Open SDK个人信息处理规则》并确保对OpenSDK的接入使用情况符合上述规则的相关要求。

注 4:本文为微信 Android 终端开发工具的新手使用教程,只涉及教授 SDK 的使用方法,默认读者已经熟悉 IDE 的基本使用方法(Android Studio(推荐) 或 Eclipse),以及具有一定的编程知识基础等。

# 关于openSDK6.8.0的更新说明

微信将于近期发布 targetSdkVersion 30的客户端版本,因Android11系统特性,该微信版本在Android 11及以上系统版本的设备上运行时,授权登录、分享、微信支付等功能受到影响,可能无法正常使用。为了适配Android系统新版本特性,保证微信功能正常使用,请第三方应用2021年11月1日之前进行更新,点击查看更新指引:

# 关于openSDK6.8.0的更新说明

微信将于近期发布 targetSdkVersion 30的客户端版本,因Android11系统特性,该微信版本在Android 11及以上系统版本的设备上运行时,授权登录、分享、微信支付等功能受到影响,可能无法正常使用。为了适配Android系统新版本特性,保证微信功能正常使用,请第三方应用2021年11月1日之前进行更新,点击查看更新指引:

# 目录 接入指南 Android 11-更新openSDK适配 Android 13-可能存在的问题适配 # 接入指南 # 1.申请你的 AppID

请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过的应用才能进行开发。

# 2.下载 SDK 及 API 文档

Android Studio 环境下:

在 build.gradle 文件中,添加如下依赖即可: dependencies { api 'com.tencent.mm.opensdk:wechat-sdk-android:+' }

(从6.8.0版本开始,请使用 wechat-sdk-android )

由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目的根 build.gradle 文件中,添加如下代码即可: buildscript { repositories { jcenter() // 原有 jCenter 引用可继续保留 mavenCentral() } } allprojects { repositories { jcenter() // 原有 jCenter 引用可继续保留 mavenCentral() } }

特别注意,目前 Maven Central仅支持部分版本:6.6.4、6.6.5、6.6.23、6.7.0、6.7.9、6.8.0,建议开发者升级至最新版本6.8.0。后续所有版本更新都会上传至Maven Central。

Eclipse 环境下:

请前往资源下载页下载最新 SDK 包。

# 3.搭建开发环境

Android Studio 环境下:

在 Android Studio 中新建你的工程,并保证网络设置可以成功从 Maven Central 下载微信 SDK 即可。

Eclipse 环境下:

[1] 在 Eclipse 中建立你的工程。

[2] 在工程中新建一个 libs 目录,将开发工具包中 libs 目录下的 libammsdk.jar 复制到该目录中(如下图所示,建立了一个名为 SDK_Sample 的工程,并把 jar 包复制到 libs 目录下)。

[3] 右键单击工程,选择 Build Path 中的 Configure Build Path...,选中 Libraries 这个 tab,并通过 Add Jars...导入工程 libs 目录下的 libammsdk.jar 文件。(如下图所示)。

在你需要使用微信终端 API 的文件中导入相应的类。

import com.tencent.mm.opensdk.openapi.WXTextObject;

# 4.在代码中使用开发工具包

[1] 注册到微信

要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的 id。(如下图所示,可以在程序入口 Activity 的 onCreate 回调函数处,或其他合适的地方将你的应用 id 注册到微信。注册函数示例如下图所示。

// APP_ID 替换为你的应用从官方网站申请到的合法appID private static final String APP_ID = "wx88888888"; // IWXAPI 是第三方app和微信通信的openApi接口 private IWXAPI api; private regToWx() { // 通过WXAPIFactory工厂,获取IWXAPI的实例 api = WXAPIFactory.createWXAPI(this, APP_ID, true); // 将应用的appId注册到微信 api.registerApp(APP_ID); //建议动态监听微信启动广播进行注册到微信 registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 将该app注册到微信 api.registerApp(Constants.APP_ID); } }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP)); }

[2] 发送请求或响应到微信

现在,你的程序要发送请求或发送响应到微信终端,可以通过 IWXAPI 的 sendReq 和 sendResp 两个方法来实现。

boolean sendReq(BaseReq req);

sendReq 是第三方 app 主动发送消息给微信,发送完成之后会切回到第三方 app 界面。

boolean sendResp(BaseResp resp);

sendResp 是微信向第三方 app 请求数据,第三方 app 回应数据之后会切回到微信界面。

sendReq 的实现示例,如下图所示:

//初始化一个 WXTextObject 对象,填写分享的文本内容 WXTextObject textObj = new WXTextObject(); textObj.text = text; //用 WXTextObject 对象初始化一个 WXMediaMessage 对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = textObj; msg.description = text; SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = String.valueOf(System.currentTimeMillis()); //transaction字段用与唯一标示一个请求 req.message = msg; req.scene = mTargetScene; //调用api接口,发送数据到微信 api.sendReq(req);

需要注意的是,SendMessageToWX.Req 的 scene 成员,如果 scene 填 WXSceneSession,那么消息会发送至微信的会话内。如果 scene 填 WXSceneTimeline(微信 4.2 以上支持,com.tencent.mm.opensdk.constants.Build.java 里面定义了各个功能支持的版本号,如果需要检查微信版本支持 API 的情况, 可调用 IWXAPI 的 getWXAppSupportAPI 方法,比如,要判断微信是否支持分享到朋友圈功能,可以如下所示进行判断:

if (api.getWXAppSupportAPI() >= Build.TIMELINE_SUPPORTED_SDK_INT) { //do share }

那么消息会发送至朋友圈。scene 默认值为 WXSceneSession。

sendResp 的实现与 SendReq 类似,如下图所示:

// 初始化一个 WXTextObject 对象 WXTextObject textObj = new WXTextObject(); textObj.text = text; // 用 WXTextObject 对象初始化一个 WXMediaMessage 对象 WXMediaMessage msg = new WXMediaMessage(textObj); msg.description = text; // 构造一个Resp GetMessageFromWX.Resp resp = new GetMessageFromWX.Resp(); // 将req的transaction设置到resp对象中,其中bundle为微信传递过来的Intent所带的内容,通过getExtras()方法获取 resp.transaction = new GetMessageFromWX.Req(bundle).transaction; resp.message = msg; //调用api接口,发送数据到微信 api. sendResp (resp) ;

具体要发送的内容由第三方 app 开发者定义,具体可参考微信开发工具包中的 SDK Sample Demo 源码。

[3] 接收微信的请求及返回值

如果你的程序需要接收微信发送的请求,或者接收发送到微信请求的响应结果,需要下面 3 步操作:

a. 在你的包名相应目录下新建一个 wxapi 目录,并在该 wxapi 目录下新增一个 WXEntryActivity 类,该类继承自 Activity(例如应用程序的包名为 net.sourceforge.simcpux,则新添加的类如下图所示)

并在 manifest 文件里面加上exported、taskAffinity及launchMode属性,其中exported设置为true,taskAffinity设置为你的包名,launchMode设置为singleTask,例如:

b. 实现 IWXAPIEventHandler 接口,微信发送的请求将回调到 onReq 方法,发送到微信请求的响应结果将回调到 onResp 方法

c. 在 WXEntryActivity 中将接收到的 intent 及实现了 IWXAPIEventHandler 接口的对象传递给 IWXAPI 接口的 handleIntent 方法,示例如下图:

api.handleIntent(getIntent(), this);

当微信发送请求到你的应用,将通过 IWXAPIEventHandler 接口的 onReq 方法进行回调,类似的,应用请求微信的响应结果将通过 onResp 回调。

注意事项

[1]如果需要混淆代码,为了保证 sdk 的正常使用,需要在 proguard.cfg 加上下面两行配置:

-keep class com.tencent.mm.opensdk.** { *; } -keep class com.tencent.wxop.** { *; } -keep class com.tencent.mm.sdk.** { *; }

[2]如果需要运行 SDK Sample 工程,需要通过指定的 debug.keystore 来进行签名:

Android Studio 环境下:

signingConfigs { debug { storeFile file("../debug.keystore") } }

Eclipse 环境下:

请查阅文档《如何运行 SDK Demo 工程 》

至此,你已经能使用微信 Android 开发工具包的 API 内容了。如果想更详细了解每个 API 函数的用法,请查阅 Android 平台参考手册 或自行下载阅读微信 SDK Sample Demo 源码。

前往下载微信 SDK 示例代码

# Android 11-更新openSDK适配

针对微信 targetSdkVersion 30的客户端版本,因Android11系统特性,该微信版本在Android 11及以上系统版本的设备上运行时,授权登录、分享、微信支付等功能受到影响,可能无法正常使用。为了适配Android系统新版本特性,保证微信功能正常使用,请第三方应用2021年11月1日之前进行如下更新:

# 适配方案 第三方应用需要更新微信 Android SDK至6.8.0版本,引用代码如下: dependencies { api 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0' // 或者直接引用最新版本 // api 'com.tencent.mm.opensdk:wechat-sdk-android:+' }

无论第三方应用targetSdkVersion是否升级为30,均需要进行微信 Android SDK版本升级适配。

targetSdkVersion升级到30的第三方应用,由于Android 11 软件包可见性 特性的影响,OpenSDK的接口可能无法正常拉起微信,从而无法使用微信的部分功能,需要在主工程的AndroidManifest.xml 中增加标签,代码如下: ... // 在应用的AndroidManifest.xml添加如下标签 // 指定微信包名 ...

注:添加以上标签之后,需要开发者升级编译工具,否则会出现编译错误。

Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本 Android SDK Build-Tools 需要升级至 30 及以上版本 com.android.tools.build:gradle 需要升级至 3.6.0 版本及以上 # 验证流程

环境准备:

系统:Android 11及以上 微信:下载target30测试版微信 第三方应用:已按照步骤1和2更新openSDK

验证流程:

(1) 安装第三方应用后,首次触发微信登录功能。(注:该操作前务必不要触发任何分享、跳转等openSDK功能)

(2) 若成功完成微信登录功能,即验证openSDK更新成功。

(2) 若签名验证失败,收到回调errcode=-6,则需开发者重新检查步骤1和2是否完成。

targetSdkVersion升级到30的第三方应用,具体适配详情另可参考文档Android 11 系统策略更新,请开发者及时适配

# Android 13-可能存在的问题适配 # 1. Intent-filter导致的无法回跳问题 # 存在的问题

Android13开始Intent过滤器会屏蔽不匹配的intent。详见Android官网:Andorid13变更说明

因此如果:

开发者在Manifest内声明WXEntryActivity时,添加了intent-filter 开发者的APP运行在Android13的手机上

当满足以上两个条件时,微信内可能将无法回跳到第三方App

# 解决办法

在manifest中,尝试去除WXEntryActivity的intent-filter。具体写法应该遵照上面接入方案中提到的示例,如下:



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭