安卓A15系統實現修改鎖屏界面默認壁紙功能

最近遇到一個A15系統項目,客戶要求修改鎖屏界面的默認壁紙,客戶提供了一張壁紙圖片,但是從A15系統的源代碼查看時才知道谷歌已經去掉了相關的代碼,已經不支持了,A13和A14系統好像是支持的,A15系統的WallpaperManager.java有明顯不支持的提示如下:

?所以必須采用其他的方法來實現,具體修改如下:

?1.將客戶給的鎖屏壁紙圖片拷貝到源代碼中,然后添加一行拷貝代碼將圖片拷貝到system/media/目錄下即可,如下:

2. 到packages/apps/Settings/src/com/android/settings/SettingsInitialize.java這個類文件中去修改代碼,為什么選擇在這個文件去修改呢?是因為這個SettingsInitialize.java文件是機器第一次開機進系統時會執行一次,以后的重啟或者開機都不會執行了,就不用去添加系統屬性標記位去判斷是否是第一次開機進系統,具體修改如下:

?

diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index 4887e26940c..0b04660c95b 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -46,6 +46,16 @@ import com.android.settingslib.utils.ThreadUtils;import java.util.ArrayList;import java.util.List;+import android.app.WallpaperManager;
+import android.graphics.Bitmap;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+import android.os.Handler;
+import android.content.Context;
+import android.graphics.BitmapFactory;
+import java.io.IOException;
+
+/*** Listens to {@link Intent.ACTION_PRE_BOOT_COMPLETED} and {@link Intent.ACTION_USER_INITIALIZE}* performs setup steps for a managed profile (disables the launcher icon of the Settings app,
@@ -58,6 +68,7 @@ public class SettingsInitialize extends BroadcastReceiver {private static final String PRIMARY_PROFILE_SETTING ="com.android.settings.PRIMARY_PROFILE_CONTROLLED";private static final String WEBVIEW_IMPLEMENTATION_ACTIVITY = ".WebViewImplementation";
+    private Context mContext;@Overridepublic void onReceive(Context context, Intent broadcast) {
@@ -69,8 +80,41 @@ public class SettingsInitialize extends BroadcastReceiver {webviewSettingSetup(context, pm, userInfo);ThreadUtils.postOnBackgroundThread(() -> refreshExistingShortcuts(context));enableTwoPaneDeepLinkActivityIfNecessary(pm, context);
+
+        mContext = context;
+        mLockScreenHandler.removeCallbacks(mLockScreenRunnable);
+        mLockScreenHandler.postDelayed(mLockScreenRunnable,1);}+    private Runnable mLockScreenRunnable = new Runnable() {
+        @Override
+        public void run() {
+           setLockScreenWallpaper();
+        }
+    };
+
+    private Handler mLockScreenHandler = new Handler();
+
+    private void setLockScreenWallpaper() {
+        WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext);
+        int FLAG_SET_LOCK = 1 << 1;
+        try {
+            //InputStream inputStream = new InputStream(new File("system/media/default_lock_wallpaper.png"));
+            //Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
+            Bitmap bitmap = BitmapFactory.decodeFile("system/media/default_lock_wallpaper.png");
+            //bitmap.eraseColor(0xFFBB86FC); //設置成紫色,有對應圖片的話可以設置成對應圖片
+            ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(2048);
+            if (bitmap.compress(Bitmap.CompressFormat.PNG, 100, tmpOut)) {
+                byte[] outByteArray = tmpOut.toByteArray();
+                wallpaperManager.setStream(new ByteArrayInputStream(outByteArray), null,
+                                true, FLAG_SET_LOCK);
+            }
+        } catch (IOException e) {
+
+		}
+		
+     }
+private void managedProfileSetup(Context context, final PackageManager pm, Intent broadcast,UserInfo userInfo) {if (userInfo == null || !userInfo.isManagedProfile()) {

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906177.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906177.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從理論到實戰:模糊邏輯算法的深度解析與應用實踐

從理論到實戰&#xff1a;模糊邏輯算法的深度解析與應用實踐 一、模糊邏輯的核心概念與數學基礎 模糊邏輯&#xff08;Fuzzy Logic&#xff09;是一種處理不確定性的數學工具&#xff0c;其核心思想是將傳統布爾邏輯的“非黑即白”擴展為連續的隸屬度函數。例如&#xff0c;在…

正向代理與反向代理區別及應用

正向代理和反向代理是兩種常見的代理服務器類型&#xff0c;它們在網絡架構中扮演不同角色&#xff0c;核心區別在于代理對象和使用場景。 1. 正向代理&#xff08;Forward Proxy&#xff09; 定義&#xff1a;正向代理是客戶端&#xff08;如瀏覽器&#xff09;主動配置的代理…

OpenCV CUDA模塊中逐元素操作------邏輯運算

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 比較、AND、OR、NOT等。這類操作可用于創建基于條件的掩碼&#xff0c;這對于圖像分割或特征選擇非常有用。 主要函數 1. 按位與 (cv::cuda::b…

一臺入網的電腦有6要素, 機器名,mac,ip,俺碼,網關,dns,分別有什么作用

一臺入網的電腦需要配置的 六大網絡要素&#xff08;機器名、MAC地址、IP地址、子網掩碼、網關、DNS&#xff09;各自承擔不同的關鍵作用&#xff0c;共同確保設備能正確通信和訪問網絡資源。以下是它們的詳細功能解析&#xff1a; 1. 機器名&#xff08;主機名&#xff09; 作…

MySQL之儲存引擎和視圖

一、儲存引擎 基本介紹&#xff1a; 1、MySQL的表類型由儲存引擎(Storage Engines)決定&#xff0c;主要包括MyISAM、innoDB、Memory等。 2、MySQL數據表主要支持六種類型&#xff0c;分別是&#xff1a;CSV、Memory、ARCHIVE、MRG_MYISAN、MYISAM、InnoBDB。 3、這六種又分…

【Spring Boot后端組件】mybatis-plus使用

文章目錄 mybatis-plus使用一、依賴引入二、添加相關配置項三、功能詳解1.自增主鍵2.邏輯刪除3.操作時間自動填充4.其他字段自動填充5.分頁查詢6.自定義動態查詢7.代碼生成器8.代碼生成器(自定義模板) mybatis-plus使用 一、依賴引入 pom.xml文件 <?xml version"1.…

docker compose 啟動指定的 service

使用 Docker Compose 啟動指定服務 要在 Docker Compose 中啟動特定的服務而不是所有服務&#xff0c;可以使用以下命令&#xff1a; docker compose up [服務名] 基本用法 啟動單個服務&#xff1a; docker compose up service_name 啟動多個指定服務&#xff1a; docker …

wordcount程序

### 在 IntelliJ IDEA 中編寫和運行 Spark WordCount 程序 要使用 IntelliJ IDEA 編寫并運行 Spark 的 WordCount 程序&#xff0c;需按照以下流程逐步完成環境配置、代碼編寫以及任務提交。 --- #### 1. **安裝與配置 IntelliJ IDEA** 確保已正確安裝 IntelliJ IDEA&#x…

SmartETL函數式組件的設計與應用

SmartETL框架主要采用了面向對象的設計思想&#xff0c;將ETL過程中的處理邏輯抽象為Loader和Processor&#xff08;對應loader模塊和iterator模塊&#xff09;&#xff0c;所有流程組件需要繼承或實現DataProvider&#xff08;iter方法&#xff09;或JsonIterator&#xff08;…

鴻蒙AI開發:10-多模態大模型與原子化服務的集成

鴻蒙AI開發&#xff1a;10-多模態大模型與原子化服務的集成 在鴻蒙生態中&#xff0c;多模態大模型與原子化服務的集成是一個重要課題。本文將介紹如何在鴻蒙平臺上進行多模態大模型與原子化服務的集成&#xff0c;以及相關的技術細節和實際案例。 鴻蒙AI開發概述 什么是鴻蒙AI…

python打卡day29@浙大疏錦行

知識點回顧 類的裝飾器裝飾器思想的進一步理解&#xff1a;外部修改、動態類方法的定義&#xff1a;內部定義和外部定義 作業&#xff1a;復習類和函數的知識點&#xff0c;寫下自己過去29天的學習心得&#xff0c;如對函數和類的理解&#xff0c;對python這門工具的理解等&…

20250516使用TF卡將NanoPi NEO core開發板出廠的Ubuntu core22.04.3系統降級到Ubuntu core16.04.2

20250516使用TF卡將NanoPi NEO core開發板出廠的Ubuntu core22.04.3系統降級到Ubuntu core16.04.2 2025/5/16 10:58 緣起&#xff1a;NanoPi NEO core核心板出廠預制的OS操作系統為Ubuntu core22.04.3系統。 【雖然是友善之臂提供的最新的系統&#xff0c;但是缺少很多用用程序…

密西根大學新作——LightEMMA:自動駕駛中輕量級端到端多模態模型

導讀 目前將自動駕駛與視覺語言模型&#xff08;VLMs&#xff09;結合的研究越來越火熱&#xff0c;VLMs已經證明了其對自動駕駛的重要作用。本文引入了一種用于自動駕駛的輕量級端到端多模態模型LightEMMA&#xff0c;它能夠集成和評估當前的商業和開源模型&#xff0c;以研究…

框架之下再看HTTP請求對接后端method

在當今的軟件開發領域&#xff0c;各類框架涌現&#xff0c;極大地提升了開發效率。以 Java 開發為例&#xff0c;Spring 框架不斷演進&#xff0c;Spring Boot 更是簡化到只需引入 Maven 包&#xff0c;添加諸如SpringBootApplication、RestController等注解&#xff0c;就能輕…

Vue+Go 自定義打字素材的打字網站

Typing_Key_Board 這是一個基于Vue 3和Go語言的自定義素材打字練習網站&#xff0c;靈感來源于常用字打字練習&#xff0c;解決了大多數網站無法自定義打字素材的問題。在 Typing_Key_Board (簡稱TKB)中&#xff0c;用戶可以自定義打字素材進行練習&#xff0c;在復習代碼的同…

開源物聯網平臺(OpenRemote)

在物聯網技術蓬勃發展的當下&#xff0c;OpenRemote作為一款強大的開源物聯網平臺&#xff0c;正逐漸在多個領域嶄露頭角。尤其是在智能能源管理領域&#xff0c;它為微電網和分布式能源網絡提供了全面且靈活的數據集成與管理方案&#xff0c;展現出獨特的優勢。 OpenRemote提供…

Spring Security與SaToken的對比與優缺點分析

Spring Security與SaToken對比分析 一、框架定位 Spring Security 企業級安全解決方案&#xff0c;深度集成Spring生態提供完整的安全控制鏈&#xff08;認證、授權、會話管理、攻擊防護&#xff09;適合中大型分布式系統 SaToken 輕量級權限認證框架&#xff0c;專注Token會…

每日一道leetcode(新學數據結構版)

208. 實現 Trie (前綴樹) - 力扣&#xff08;LeetCode&#xff09; 題目 Trie&#xff08;發音類似 "try"&#xff09;或者說 前綴樹 是一種樹形數據結構&#xff0c;用于高效地存儲和檢索字符串數據集中的鍵。這一數據結構有相當多的應用情景&#xff0c;例如自動…

【自然語言處理與大模型】大模型(LLM)基礎知識④

&#xff08;1&#xff09;微調主要用來干什么&#xff1f; 微調目前最主要用在定制模型的自我認知和改變模型對話風格。模型能力的適配與強化只是輔助。 定制模型的自我認知&#xff1a;通過微調可以調整模型對自我身份、角色功能的重新認知&#xff0c;使其回答更加符合自定義…

基于 Spring Boot 瑞吉外賣系統開發(十五)

基于 Spring Boot 瑞吉外賣系統開發&#xff08;十五&#xff09; 前臺用戶登錄 在登錄頁面輸入驗證碼&#xff0c;單擊“登錄”按鈕&#xff0c;頁面會攜帶輸入的手機號和驗證碼向“/user/login”發起請求。 定義UserMapper接口 Mapper public interface UserMapper exte…