给任意apk内容添加水印

1 有源码给app添加水印

使用java可以适配更多的apk,如果使用koltin一些老的apk就会有适配问题
通过registerActivityLifecycleCallbacks拿到activity对象设置水印
在application里面registerActivityLifecycleCallbacks就行

static class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {@Overridepublic void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {android.util.Log.e("MyAppComponentFactory","onActivityCreated--------" + activity.getComponentName());activity.getWindow().getDecorView().postDelayed(new Runnable() {@Overridepublic void run() {showWatermarkView(activity);}}, 300);}@Overridepublic void onActivityStarted(@NonNull Activity activity) {}@Overridepublic void onActivityResumed(@NonNull Activity activity) {}@Overridepublic void onActivityPaused(@NonNull Activity activity) {}@Overridepublic void onActivityStopped(@NonNull Activity activity) {}@Overridepublic void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {}@Overridepublic void onActivityDestroyed(@NonNull Activity activity) {}private void showWatermarkView(Activity activity) {ViewGroup decorView = activity.getWindow().getDecorView().findViewById(android.R.id.content);if (decorView.findViewWithTag("TOP_BG") == null) {ImageView topBg = new ImageView(activity);topBg.setTag("TOP_BG");topBg.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));topBg.setScaleType(ImageView.ScaleType.CENTER_CROP);
//                topBg.setBackground(new WaterMarkBgView(activity, Arrays.asList("Test"), -30, 14));topBg.setClickable(false);topBg.setFocusable(false);topBg.setFocusableInTouchMode(false);decorView.addView(topBg);}}}
}

无源码给apk添加

自定义AppComponentFactory并拿到application对象并调用registerActivityLifecycleCallbacks,

public class MyAppComponentFactory extends android.app.AppComponentFactory{@NonNullpublic Application instantiateApplication(ClassLoader cl, String className) throws InstantiationException, IllegalAccessException, ClassNotFoundException {Class<?> c = cl.loadClass(className);Application app = (Application) c.newInstance();app.registerActivityLifecycleCallbacks(new MyActivityLifecycleCallbacks());return app;}static class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {@Overridepublic void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {android.util.Log.e("MyAppComponentFactory","onActivityCreated--------" + activity.getComponentName());activity.getWindow().getDecorView().postDelayed(new Runnable() {@Overridepublic void run() {showWatermarkView(activity);}}, 300);}@Overridepublic void onActivityStarted(@NonNull Activity activity) {}@Overridepublic void onActivityResumed(@NonNull Activity activity) {}@Overridepublic void onActivityPaused(@NonNull Activity activity) {}@Overridepublic void onActivityStopped(@NonNull Activity activity) {}@Overridepublic void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {}@Overridepublic void onActivityDestroyed(@NonNull Activity activity) {}private void showWatermarkView(Activity activity) {ViewGroup decorView = activity.getWindow().getDecorView().findViewById(android.R.id.content);if (decorView.findViewWithTag("TOP_BG") == null) {ImageView topBg = new ImageView(activity);topBg.setTag("TOP_BG");topBg.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));topBg.setScaleType(ImageView.ScaleType.CENTER_CROP);
//                topBg.setBackground(new WaterMarkBgView(activity, Arrays.asList("Test"), -30, 14));topBg.setClickable(false);topBg.setFocusable(false);topBg.setFocusableInTouchMode(false);decorView.addView(topBg);}}}
}

修改AndroidManifest application标签
android:appComponentFactory=".MyAppComponentFactory"回编译

直接修改smali文件

先把添加水印功能写到一个java文件中,然后编译得到.smali文件,把文件放到需要添加的apk翻遍后的代码中,找到Application类并在onCreate()中调用添加水印功能,这些步骤可以通过python完成

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

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

相关文章

扩展的Fortran在高性能计算(HPC)中助力有限元分析(FEA)、流体力学(CFD)、结构力学、复合材料和增材制造仿真的详细指南【附完整示例代码实现】

Fortran 在高性能计算(HPC)中的仿真应用 本指南深入探讨 Fortran 语言如何在高性能计算(HPC)中助力有限元分析(FEA)、流体力学(CFD)、结构力学、复合材料和增材制造仿真。每部分详细介绍,分析 Fortran 的优势、应用场景和实现细节,并附带完整的 Fortran 模拟代码(含…

Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的跨语言信息检索与知识融合(331)

Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的跨语言信息检索与知识融合&#xff08;331&#xff09; 引言&#xff1a;正文&#xff1a;一、Java 驱动的多语言数据处理平台1.1 分布式多语言语料智能清洗系统1.2 多语言文本分布式存储与索引优化1.3 低资源语言数据…

[2025CVPR]SEEN-DA:基于语义熵引导的领域感知注意力机制

目录 引言 研究背景 方法介绍 核心思想 语义熵&#xff08;Semantic Entropy&#xff09; 语义熵引导的注意力机制 领域感知注意力模块 实验设计 数据集 实现细节 结果与分析 对比实验结果 消融实验 代码实现 结论 引言 领域自适应目标检测&#xff08;Domain …

你的RAG系统安全么?

生成式人工智能&#xff08;GenAI&#xff09;近年来发展迅速&#xff0c;大语言模型成为这一浪潮的核心力量。无论是商业还是开源模型&#xff0c;它们都具备强大的语言理解与生成能力&#xff0c;正广泛应用于内容创作、聊天机器人等场景&#xff0c;让企业更容易落地智能应用…

【2.3 漫画SpringSecurity - 守护应用安全的钢铁卫士】

🔐 漫画SpringSecurity - 守护应用安全的钢铁卫士 📚 目录 记忆口诀可视化图表形象比喻数字记忆实战案例记忆卡片总结诗句面试准备🎪 记忆口诀 🏗️ SpringSecurity核心 - “认证授权过滤链” 认证Authentication确身份,用户名密码验证真 授权Authorization控权限,…

ModbusRTU转Profinet网关在电子天平与PLC系统集成中的应用

ModbusRTU转Profinet网关在电子天平与PLC系统集成中的应用 工业自动化场景中&#xff0c;设备通信协议差异常成为系统集成的隐形壁垒。某精密制造企业近期遇到的奥豪斯电子天平与西门子PLC通讯难题&#xff0c;正是这一矛盾的典型缩影。奥豪斯天平采用ModbusRTU协议&#xff0…

js代码后续

这是一个非常棒的问题&#xff0c;也是每个学完一个系统课程的人都会问的问题。 答案是&#xff1a;不&#xff0c;你没有学完“所有”的 JavaScript 知识&#xff0c;但你已经出色地完成了成为一名合格 JavaScript 开发者的所有“必修课”。 让我用一个比喻来解释&#xff1…

百度文心大模型 4.5 系列全面开源 英特尔同步支持端侧部署

2025 年 6 月 30 日&#xff0c;百度如期兑现 2 月 14 日的预告&#xff0c;正式开源文心大模型 4.5&#xff08;ERNIE 4.5&#xff09;系列&#xff0c;涵盖 10 款不同参数规模的模型&#xff0c;包括 470 亿参数混合专家&#xff08;MoE&#xff09;模型、30 亿参数 MoE 模型…

Google AI Edge Function Calling: Android 端模型也能调用工具函数

大家好&#xff0c;我是拭心。 上篇文章我们了解了如何在 Android 手机上实现 RAG。这篇文章我们来聊聊端上大模型应用开发的核心概念&#xff1a;Function Calling&#xff08;函数调用能力&#xff0c;简写为 FC&#xff09;。 Function Calling 本质上是让大模型在回答过程…

模型调试实用技巧 (Pytorch Lightning)

【PL 基础】模型调试实用技巧 摘要1. 设置断点2. 快速运行所有模型代码一次3. 缩短 epoch 长度4. 运行健全性检查5. 打印 LightningModule 权重摘要6. 打印输入输出层尺寸 摘要 本文总结了6种实用的模型调试技巧&#xff1a;1&#xff09;通过设置断点逐行检查代码&#xff1b;…

计算机网络(四)网际层IP

目录 一、概念 ​编辑 二、网际层和数据链路层的关系​ 三、IP地址的基础认识 四、IP地址的分类 五、无分类地址CIDR 六、子网掩码 七、为什么要分离网络号和主机号 八、公有IP和私有IP ​编辑 九、IP地址与路由控制 十、IP分片和重组 十一、IPv6 十二、IP协议…

Java--多态--向上转型--动态绑定机制--断点调试--向下转型

目录 1. 向上转型 2. 向下转型 3. java的动态绑定机制&#xff1a; 4. Object类讲解 5. 断点调试 1. 向上转型 提前&#xff1a;俩个对象&#xff08;类&#xff09;存在继承关系 本质&#xff1a;父类的引用指向了子类的对象 语法&#xff1a;父类 类型 引用名 new…

Python爬虫实战:研究urllib 库相关技术

1. 引言 1.1 研究背景与意义 互联网每天产生海量数据,如何高效获取和利用这些数据成为重要研究方向。网页爬虫作为自动获取网络信息的核心技术,在市场调研、舆情分析、学术研究等领域具有广泛应用。Python 凭借其简洁语法和丰富库支持,成为爬虫开发的首选语言。 1.2 相关…

【机器学习赋能的智能光子学器件系统研究与应用】

目前在Nature和Science杂志上发表的机器学习与光子学结合的研究主要集中在以下几个方面&#xff1a; 1.光子器件的逆向设计&#xff1a;通过机器学习&#xff0c;特别是深度学习&#xff0c;可以高效地进行光子器件的逆向设计&#xff0c;这在传统的多参数优化问题中尤为重要。…

Codeforces Round 1034 (Div. 3)

比赛链接如下&#xff1a;https://codeforces.com/contest/2123 A. Blackboard Game Initially, the integers from 00 to n−1 are written on a blackboard. In one round, Alice chooses an integer a on the blackboard and erases it;then Bob chooses an integer b on …

微电网系列之微电网的孤岛运行

个人主页&#xff1a;云纳星辰怀自在 座右铭&#xff1a;“所谓坚持&#xff0c;就是觉得还有希望&#xff01;” 微电网的孤岛运行 微电网具有并网和孤岛两种运行模式&#xff0c;由于孤岛运行模式下&#xff0c;分布式电源为微电网内部负荷提供频率和电压支撑&#xff0c;由…

JsonCpp的核心类及核心函数使用汇总

文章目录 JsonCpp的核心类及核心函数使用汇总一、前言二、JsonCpp 核心类介绍三、Value 类函数解析1. 值获取函数&#xff08;asxxx 系列 &#xff09;2. 值类型判断函数&#xff08;isxxx 系列 &#xff09;3. 数组操作函数4. 对象操作函数5. 运算符重载6. 迭代器7. JSON 转化…

Qt写入excel

1.tableView导出到excel 点击导出函数按钮、发送sendMessage信号&#xff08;信号名称&#xff0c;对象&#xff0c;数据&#xff09; void HydroelectricPowerPluginImpl::exportTableViewSelectedRows(QTableView* tableView, QWidget* parent) {if (!tableView || !tableVie…

OSCP - Proving Grounds - DC - 1

主要知识点 drupal 7 RCEfind SUID提权 具体步骤 nmap起手,80端口比较有意思&#xff0c;安装了 Drupal 7 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-17 14:23 UTC Nmap scan report for 192.168.57.193 Host is up (0.00087s latency). Not shown: 65531 cl…

仿小红书交流社区(微服务架构)

文章目录 framework - 平台基础设施starter - jacksoncommonexceptionresponseutil starter - content 全局上下文distributed - id - generate - 分布式 IdSnowflake - 基于雪花算法生成 IdSegment - 基于分段式生成 Id OSS - 对象存储KV - 短文本存储笔记评论 user - 用户服务…