給任意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
英文地址,請注明出處:http://en.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 - 用戶服務…