深度解析:Android APP集成与拉起微信小程序开发全攻略
目录
一、背景以及功能介绍
二、Android开发示例
2.1 下载 SDK
2.2 调用接口
2.3 获取小程序原始Id
2.4 报错提示:bad_param
2.4.1 错误日志
2.4.2 解决方案
相关推荐
一、背景以及功能介绍
需求:产品经理需要APP跳转到公司的小程序(最好指定页面),做到互联互通,结果在网上搜索几天没找到,事实证明咱的搜索描述有问题。虽然战略调整暂时不需要,但实际该储备还是要储备的,特此记录。
考虑到部分场景下 APP 需要通过小程序来承载服务,为此 OpenSDK 提供了移动应用(APP)拉起小程序功能。移动应用(APP)接入此功能后,用户可以在 APP 中跳转至微信某一小程序的指定页面,完成服务后再跳回至原 APP 。
移动应用拉起小程序功能已向全体开发者开放,开发者在微信开放平台账号下申请移动应用并通过审核后,即可获得移动应用拉起小程序功能权限。
跳转规则
- 对于已通过认证的开放平台账号,其移动应用可以跳转至任何合法的小程序,且不限制跳转的小程序数量。
- 对于未通过认证的开放平台账号,其移动应用仅可以跳转至同一开放平台账号下小程序。
注意:若移动应用未上架,则最多只能跳转小程序100次/天,用于满足调试需求。
二、Android开发示例
2.1 下载 SDK
- 在 build.gradle 文件中,添加如下依赖即可:
dependencies {//两种方式都可以,我这边指定了版本implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.30'//api 'com.tencent.mm.opensdk:wechat-sdk-android:+'
}
- 由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目的根 build.gradle 文件中,添加如下代码即可:
buildscript {repositories {jcenter() // 原有 jCenter 引用可继续保留mavenCentral()}
}allprojects {repositories {jcenter() // 原有 jCenter 引用可继续保留mavenCentral()}
}
- 由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目(高版本)的根 settings.gradle 文件中,添加如下代码即可:
pluginManagement {repositories {google()mavenCentral()jcenter() // 原有 jCenter 引用可继续保留gradlePluginPortal()}
}dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()jcenter() // 原有 jCenter 引用可继续保留maven { url 'https://jitpack.io' }}
}
2.2 调用接口
SDK 下载成功后,直接引用即可。
调用接口:WXLaunchMiniProgram
移动应用跳转到小程序示例:
String appId = "wxd930ea5d5a258f4f"; // 填移动应用(App)的 AppId,非小程序的 AppIDIWXAPI api = WXAPIFactory.createWXAPI(this, "");WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();req.userName = "gh_e41deef720ad"; // 填小程序原始idreq.path = "";// path:拉起小程序页面的可带参路径,不填默认拉起小程序首页。// 对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版api.sendReq(req);
因此我们需要针对移动应用申请 AppID。
因为我仅是调试体验,因此没有移动应用AppId,如果乱填会有如下提示:

2.3 获取小程序原始Id
路径:进入小程序=>右上方【···(更多)】=>点击弹窗左上方小程序名称=>选择更多资料即可查看。

2.4 报错提示:bad_param

2.4.1 错误日志
launchWXUsingPendingIntent pendingIntent send failed: com.shenhua.zhihui.ai: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
百度翻译:launchWXUsingPendingIntent pendingIntent发送失败:com.shenhua.zhihui.ai:目标S+(版本31及以上)要求在创建pendingIntent时指定FLAG_IMUTABLE或FLAG_MUTTABLE之一。
强烈建议使用FLAG_IMUTABLE,只有当某些功能依赖于PendingIntent是可变的时,才使用FLAG_MUTTABLE,例如,如果它需要与内联回复或气泡一起使用。
2.4.2 解决方案
无论第三方应用targetSdkVersion是否升级为30,均需要进行微信 Android SDK版本升级适配。
targetSdkVersion升级到30的第三方应用,由于Android 11 软件包可见性 特性的影响,OpenSDK的接口可能无法正常拉起微信,从而无法使用微信的部分功能,需要在主工程的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">...// 在应用的AndroidManifest.xml添加如下<queries>标签<queries><package android:name="com.tencent.mm" /> <!--指定微信包名--></queries>...</manifest>
测试结果:已经没有上面的错误了,但还是提示 bad_param,不排除我没有添加AppId的可能。后面就不往下走啦,需要微信公众号平台账号(我当遗失了,暂时没时间搞先搁置),感兴趣有条件的朋友可以自己试试。
iOS同理。
相关推荐
APP拉起小程序功能-功能介绍 | 微信开放文档
讯飞、阿里云、腾讯云:Android 语音合成服务对比选择-CSDN博客
讯飞与腾讯云:Android 实时语音识别服务对比选择-CSDN博客
相关文章:
深度解析:Android APP集成与拉起微信小程序开发全攻略
目录 一、背景以及功能介绍 二、Android开发示例 2.1 下载 SDK 2.2 调用接口 2.3 获取小程序原始Id 2.4 报错提示:bad_param 2.4.1 错误日志 2.4.2 解决方案 相关推荐 一、背景以及功能介绍 需求:产品经理需要APP跳转到公司的小程序(最好指定页…...
Leetcode 被围绕的区域
算法思想(解题思路): 这道题的核心是 将所有被边界包围的 O 保留下来,而将其他被围绕的 O 转换为 X。为了实现这一目标,我们可以分三步完成: 第一步:标记边界及其相连的 O 为特殊标记ÿ…...
ssm框架-spring-spring声明式事务
声明式事务概念 声明式事务是指使用注解或 XML 配置的方式来控制事务的提交和回滚。 开发者只需要添加配置即可, 具体事务的实现由第三方框架实现,避免我们直接进行事务操作! 使用声明式事务可以将事务的控制和业务逻辑分离开来,提…...
React第五节 组件三大属性之 props 用法详解
特性 a、props最好是仅限于父子上下级之间的数据传递,如果是祖孙多级之间传递属性,可以考虑使用props是否合适,或者使用替代方案 useContext() 或者使用 redux状态管理; b、props 中的属性是只读属性,如果想修改其中的…...
测评部署和管理 WordPress 最方便的面板
新版宝塔面板快速搭建WordPress新手教程 - 倚栏听风-Morii - 博客园 初学者使用1Panel面板快速搭建WordPress网站 - 倚栏听风-Morii - 博客园 可以看到,无论是宝塔还是1Panel,部署和管理WordPress都有些繁琐,而且还需要额外去配置Nginx和M…...
【系统分析师】-2024年11月论文-论DevOps开发
1、题目要求 论Devops及其应用。Devops是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通,协作与整合。它是一种重视软体开发人员和工厂运维技术人员之间沟通合作的模式。透过自动化“软件交付”和“架构变更”的流程&…...
算法【子数组最大累加和问题与扩展】
子数组最大累加和问题是一个非常经典的问题,也比较简单。但是扩展出的问题很多,在笔试、面试中特别常见,扩展出的问题很多非常有趣,解法也比较巧妙。 下面通过一些题目来加深理解。 题目一 测试链接:https://leetcode…...
小程序23-页面的跳转:navigation 组件详解
小程序中,如果需要进行跳转,需要使用 navigation 组件,常用属性: 1.url :当前小程序内的跳转链接 2.open-type:跳转方式 navigate:保留当前页面,跳转应用内的某个页面,…...
AI社媒引流工具:解锁智能化营销的新未来
在数字化浪潮的推动下,社交媒体成为品牌营销的主战场。然而,面对海量的用户数据和日益复杂的运营需求,传统营销方法显得力不从心。AI社媒引流王应运而生,帮助企业在多平台中精准触达目标用户,提升营销效率和效果。 1.…...
【Node.js】全面解析 Node.js 安全最佳实践:保护您的应用
Node.js 是一种强大的 JavaScript 运行时,广泛用于构建现代 Web 应用和 API。然而,由于其开放性和异步特性,Node.js 应用容易受到多种安全威胁的攻击,比如 SQL 注入、跨站脚本 (XSS) 和拒绝服务攻击 (DoS)。在本文中,我…...
Docker 用法详解
文章目录 一、Docker 快速入门1.1 部署 MYSQL1.2 命令解读: 二、Docker 基础2.1 常见命令:2.1.1 命令介绍:2.1.2 演示:2.1.3 命令别名: 2.2 数据卷:2.2.1 数据卷简介:2.2.2 数据卷命令ÿ…...
Python小游戏28——水果忍者
首先,你需要安装Pygame库。如果你还没有安装,可以使用以下命令进行安装: 【bash】 pip install pygame 《水果忍者》游戏代码: 【python】 import pygame import random import sys # 初始化Pygame pygame.init() # 设置屏幕尺寸 …...
Kafka Offset 自动提交和手动提交 - 漏消费与重复消费
目录 1. 引言 2. Offset 提交方式概述 2.1 自动提交 Offset 2.2 手动提交 Offset 3. 漏消费与重复消费的问题分析 3.1 自动提交模式下的漏消费和重复消费 漏消费 重复消费 3.2 手动提交模式下的漏消费和重复消费 漏消费 重复消费 4. 自动提交与手动提交的选择 4.1…...
Vue3父组件和子组件
子组件暴露方法给父组件,父组件传值 子组件 const editCalendar (value: string) > {console.log(获取父组件的值, value)};//暴露给外部调用defineExpose({editCalendar,}); 父组件 <template> <CalendarEdit ref"editRef" /> </…...
Linux 定时任务全解析
文章目录 一、Cron 服务1.1安装1.2配置文件格式1.3使用方法1.4系统级与用户级 Cron 任务区别 二、At 服务2.1安装2.2工作原理2.3使用方法 一、Cron 服务 1.1安装 在大多数 Linux 发行版中,Cron 服务通常已经默认安装。例如在 Ubuntu 系统中,可以通过以…...
XLNet——打破 BERT 局限的预训练语言模型
近年来,深度学习在自然语言处理(NLP)领域取得了革命性进展,其中 BERT 的出现标志着双向语言建模的强大能力。然而,BERT 也存在一些局限性,限制了其在生成任务中的表现。2019 年,由 Google 和 Ca…...
开源代码统计工具cloc的简单使用
一.背景 公司之前开发了个小系统,要去申请著作权,需要填写代码数量。应该怎么统计呢?搜索了一下,还是用开源工具cloc吧!我的操作系统是windows,代码主要是java项目和vue项目。 二.到哪里找 可以去官方下载…...
如何创建一个项目用于研究element-plus的原理
需求:直接使用element-plus未封装成组件的源码,创建一个项目,可以使用任意的element-plus组件,可以深度研究组件的运行。例如研究某一个效果,如果直接在node_modules修改elment-plus打包之后的那些js、mjs代码…...
单片机进阶硬件部分_day2_项目实践
设计要求 从绘制原理图到画PCB板,完成智能云衣柜项目 STM32 (Modbus)云IOT衣物云端管理 华为PCB布线规范 基于IoT的智享家主控系统 步骤分析 需求分析 器件选型绘制原理图(器件连接)PCB布局、布线泪滴、铺铜、添加丝印…...
labview关于文件路径的问题
在调用文件或拆分文件的时候经常会用到拆分路径函数和创建路径函数,最常用的也是当前应用程序目录或者是当前VI目录。 这里我们看到应用程序目录和VI目录在同一项目中,应用程序目录更像是根目录,往下拆分成了各个VI的子目录。 接下来我们来拆…...
seo 优化计划包括哪些内容
SEO优化计划:打造高效网站流量的全面指南 在当前数字化时代,一个成功的网站离不开高效的搜索引擎优化(SEO)策略。SEO优化计划是一项复杂而多层次的工作,其目的是提升网站在搜索引擎结果中的排名,从而吸引更…...
5G时代下,MEC如何让无人驾驶不再‘卡顿’?——边缘计算实战解析
5G时代下,MEC如何让无人驾驶不再‘卡顿’?——边缘计算实战解析 当一辆无人驾驶汽车以60公里时速行驶时,每100毫秒的延迟就会导致1.67米的制动距离差异。这正是边缘计算技术(MEC)在智能交通领域大显身手的核心场景——…...
开源SCADA系统FUXA的SVG编辑器列表过滤功能:从线性列表到智能管理的技术演进
开源SCADA系统FUXA的SVG编辑器列表过滤功能:从线性列表到智能管理的技术演进 【免费下载链接】FUXA Web-based Process Visualization (SCADA/HMI/Dashboard) software 项目地址: https://gitcode.com/gh_mirrors/fu/FUXA 在工业自动化领域,SCADA…...
从ItemCF到Swing:手把手教你用Python实现小红书式协同过滤召回(附代码避坑)
从ItemCF到Swing:Python实战小红书式协同过滤召回系统 在内容社区和电商平台的推荐系统中,协同过滤算法始终占据着核心地位。不同于深度学习推荐模型对海量数据和算力的依赖,基于物品和用户的协同过滤方法以其直观的可解释性和稳定的效果&…...
基于Vivado的AD9680 FPGA芯片测试程序开发之旅
基于vivado的ad9680 FPGA芯片测试1g采样率lane4 verilog编写,包括配置ad,配置时钟,jesd204b接收 在FPGA开发领域,与高速ADC芯片如AD9680协同工作是一项充满挑战但又极具乐趣的任务。今天咱们就聊聊基于Vivado平台,针对…...
OpCore-Simplify:突破性自动化黑苹果配置工具,让OpenCore EFI生成从8小时缩短到30分钟
OpCore-Simplify:突破性自动化黑苹果配置工具,让OpenCore EFI生成从8小时缩短到30分钟 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simpli…...
终极指南:Ultimaker Cura 3D打印切片软件完整使用教程 [特殊字符]
终极指南:Ultimaker Cura 3D打印切片软件完整使用教程 🚀 【免费下载链接】Cura 3D printer / slicing GUI built on top of the Uranium framework 项目地址: https://gitcode.com/gh_mirrors/cu/Cura Ultimaker Cura是全球最受欢迎的开源3D打印…...
5个命名智慧:猫抓cat-catch文件命名系统完全指南
5个命名智慧:猫抓cat-catch文件命名系统完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾面对这样的困境:下…...
京东智能评价助手:自动化评价解决方案与效率提升实践
京东智能评价助手:自动化评价解决方案与效率提升实践 【免费下载链接】jd_AutoComment 自动评价,仅供交流学习之用 项目地址: https://gitcode.com/gh_mirrors/jd/jd_AutoComment 如何通过技术手段解决电商评价的效率瓶颈? 在电商购物场景中&…...
终极指南:如何快速掌握YimMenu GTA5增强工具
终极指南:如何快速掌握YimMenu GTA5增强工具 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...
