Android 动态加入Activity 时 manifest 注册报错解决。使用manifestPlaceholders 占位

需求如下:

项目 测试demo 有多个渠道,部分渠道包含支付功能,在主测试代码外,需要一个单独 Activity 调用测试代码。

MainActivityPayActivity
渠道A包含不包含
渠道B包含包含

因为支付功能需要引入对应的 moudule,因此希望是测试渠道A时,仅包含MainAcitivity 的代码。测试渠道B时,包含 MainAcitivity + PayActivity 的代码。

代码引入简单,添加 java 路径即可。

qudaob{// 加入支付相关代码sourceSets."$name".java.srcDirs += "src/main/code/pay/java"sourceSets."$name".res.srcDirs += "src/main/code/pay/res"
}

问题是 PayActivity 的注册。如果直接在 AndroidManifest.xml 中注册,那么不包含 PayActivity 时会报错。如果不注册,那么包含 PayActivity 时无法跳转。

前期考虑在 quandaob 文件夹下添加一个AndroidManifest.xml ,让两个 Mainifest 合并,但是一直合并不了,只能另辟蹊径。


使用 manifestPlaceholders

你可以在 build.gradle 文件中为你的 Activity 添加 manifest placeholders,然后在 AndroidManifest.xml 中引用它们。

修改 build.gradle

zebra block 中添加如下代码:

android {...defaultConfig {...manifestPlaceholders = [payActivity: "com.xxx.test_playcontrol.PayActivity" // 替换为你的 Activity 完整包名]}
}
更新 AndroidManifest.xml

AndroidManifest.xml 中,你可以使用占位符来声明 Activity:

<activity android:name="${payActivity}"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

这样在  Manifest中虽然会报红,但是编译是没问题的。Manifest 中会一直包含PayActivity. 这样无论是否有 PayActivity 都可以正常使用了

动态引用 PayActivity
                try {Class<?> dynamicClass = Class.forName("com.xxx.test_playcontrol.PayActivity");Intent intent = new Intent(this, dynamicClass);startActivity(intent);} catch (ClassNotFoundException e) {e.printStackTrace();ToastTools.quickToast(mContext,   "pay Failed!");DemoLog.e("功能未启用");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FRRouting配置与OSPF介绍,配置,命令,bfd算法:

文章目录 1、frrouting的配置&#xff1a;2、ospf2.1、检测和维护邻居关系2.2、ospfDR和BDR2.3、odpf邻居表2.4、ospf常用命令2.5、bfd配置 1、frrouting的配置&#xff1a; sudo service zebra start sudo service ospfd start telnet localhost 2604 en configure termina…

Perplexity 开源DeepSeek-R1 模型新版本 R1-1776

引言 在人工智能领域&#xff0c;模型的更新迭代如同科技界的时尚潮流&#xff0c;不断推陈出新。今天&#xff0c;我们要介绍的是Perplexity AI开源的新版推理模型——DeepSeek-R1 1776。这个版本不仅继承了前代的强大性能&#xff0c;还在公正性和准确性上进行了显著提升。那…

关系中出现这10个信号,离分手就不远了(爱情友情都适用)

亲密关系的隐形裂痕 在一个阳光明媚却略显萧瑟的午后&#xff0c;咖啡杯里的咖啡已经凉透。小李盯着手机屏幕&#xff0c;那些曾经热烈的对话记录现在看起来如此陌生&#xff0c;仿佛隔着一层薄薄的雾。她终于意识到&#xff0c;这段关系已经悄然走向尽头。 亲密关系是一场精心…

马斯克Grok3使用入口和订阅教程(白嫖150刀API额度)

文章目录 马斯克Grok3使用入口和订阅教程(白嫖150刀API额度)前言介绍如何订阅X上Premium服务国内订阅X的Premium教程 白嫖教程小结 马斯克Grok3使用入口和订阅教程(白嫖150刀API额度) 前言介绍 重点&#xff1a;Grok 3仅对X上的Premium用户开放。你需要订阅X的Premium服务才能…

相机开发调中广角和焦距有什么不一样

在相机中,调整广角和调整焦距是两个不同的概念,它们的作用和实现方式也不同。以下是两者的详细对比和解释: 1. 调整广角 定义 广角是指相机的视野范围(Field of View, FOV)。调整广角实际上是调整相机的视野范围。更广的视野意味着可以捕捉到更多的场景内容(更宽的画面)…

让大模型帮我设计crnn网络及可运行demo,gpt4o豆包qwendeepseek-r1

prompt 使用 crnn 提取图像特征&#xff0c;给出图像好坏的二分类结果&#xff0c;写清楚代码备注&#xff0c;注释清楚向量维度大小&#xff0c;并给出一个可运行的 demo1、GPT-4o 以下是一个使用 CRNN&#xff08;Convolutional Recurrent Neural Network&#xff09;提取图…

DeepBI助力跨境电商打破流量垄断:AI驱动的亚马逊广告投放新打法

#亚马逊广告优化# 亲爱的亚马逊跨境电商卖家们&#xff0c;是否曾因亚马逊的广告打法不清晰&#xff0c;或是纠结于亚马逊广告费用过高&#xff0c;或是为亚马逊电商广告怎么投放合适的问题而苦恼&#xff1f;在竞争激烈的亚马逊市场中&#xff0c;广告投放效果平平&#xff0…

前端基础入门:HTML、CSS 和 JavaScript

在现代网页开发中,前端技术扮演着至关重要的角色。无论是个人网站、企业官网,还是复杂的 Web 应用程序,前端开发的基础技术 HTML、CSS 和 JavaScript 都是每个开发者必须掌握的核心技能。本文将详细介绍这三者的基本概念及其应用 一、HTML——网页的骨架 HTML(HyperText …

单元测试junit5

一、idea 安装自动化生成插件jcode5 安装可能不成功&#xff0c;尝试多次安装&#xff1b; 安装成功后&#xff0c;重启idea&#xff0c;再次确认安装是否成功&#xff1b; 二、在需要生成单元测试代码的模块的pom中引入依赖 ......<parent><groupId>org.springf…

windows系统本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI

本文将手把手教您使用OllamaDockerOpenWebUI三件套在本地部署DeepSeek-R1大语言模型&#xff0c;实现私有化AI服务搭建。 一、环境准备 1.1 硬件要求 CPU&#xff1a;推荐Intel i7及以上&#xff08;需支持AVX2指令集&#xff09; 内存&#xff1a;最低16GB&#xff0c;推荐…

Windows Server 任务计划

背景&#xff1a;QMT服务只能在windows服务器上面运行 直接在控制面板里面搜索"任务计划"点进去 需要注意的是&#xff1a; 1.创建任务计划选择”不管用户是否登录都运行“&#xff0c;是否需要最高权限执行看你的需求 2.操作程序或脚本&#xff0c;选择bat脚本就…

makefile+LSF

LSF LSF&#xff08;Load Sharing Facility&#xff09;是一种常用的集群作业调度系统&#xff0c;bsub 命令用于提交作业到 LSF 集群&#xff0c;而若要关闭&#xff08;终止&#xff09;一个正在运行的作业&#xff0c;需要使用 bkill 命令&#xff0c;下面为你详细介绍相关…

spring boot知识点3

1.spring boot能否使用xml配置 可以&#xff0c;但是很繁琐&#xff0c;现在都建议走JavaConfig 2.spring boot的核心配置文件 application.properties application.yml 3.bootstrap.properties和application.properties的区别 b&#xff1a;用于远程配置 a&#xff1a;…

人工智能学习环境配置

文章目录 Python、CUDA、cuDNN、PyTorch 和 Anaconda 的介绍PythonCUDAcuDNNPyTorchAnaconda联系 安装n卡驱动更新安装 AnacondaAnaconda配置镜像源CUDA安装Cudnn安装Anaconda初始化创建虚拟环境安装 PyTorch验证安装 可能的错误SSL错误 Python、CUDA、cuDNN、PyTorch 和 Anaco…

【C语言】C语言 食堂自动化管理系统(源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【C语言】C语言 食堂自动化管理系统&#xff08;源…

DeepSeek是什么?两种模型的对比?

最近DeepSeek的风也是很大&#xff0c;它也是很火&#xff0c;那么DeepSeek是什么呢&#xff1f; 什么是DeepSeek&#xff1f; DeepSeek是一家专注通用人工智能&#xff08;AGI&#xff09;的中国科技公司&#xff0c;主攻大模型研发与应用。DeepSeek-R1是其开源的推理模型&a…

【架构】分层架构 (Layered Architecture)

一、分层模型基础理论 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0365cf0bfa754229bdedca6b472bffc7.png 1. 核心定义 分层架构(Layered Architecture)模型是一种常见的软件设计架构,它将软件系统按照功能划分为不同的层次,每个层次都有特定的职责和功能…

基于MATLAB的均匀面阵MUSIC算法DOA估计仿真

基于MATLAB的均匀面阵MUSIC算法DOA估计仿真 文章目录 前言一、二维MUSIC算法原理二、二维MUSIC算法MATLAB仿真三、MATLAB源代码总结 前言 \;\;\;\;\; 在波达角估计算法中&#xff0c;MUSIC 算法与ESPRIT算法属于特征结构子空间算法&#xff0c;是波达角估计算法中的基石。在前面…

组学数据分析实操系列 |(四) 富集气泡图的绘制

前言:在上一篇中&#xff0c;我们介绍了利用Metascape零代码实现富集分析&#xff0c;但是Metascape的富集分析结果是以柱状图的形式展示的。文章中更常使用的富集结果可视化方式是气泡图。气泡图可以通过气泡的坐标、形状、颜色、大小等来展示更加丰富的富集分析结果&#xff…

实现一个专注应用-后端开发(一)-搭建

搭建后端服务 搭建服务拆分下用户服务 增加公共库通用模块 运行一下接入数据库安装Prisma增加prisma库 redis增加redis服务 搭建服务 使用nestjs来做 这里是nestjs的网站Nestjs 安装 nest npm i -g nestjs/cli创建一个项目 并在开发工具打开 nest new todonest new xx 是新…